C/C++

Найти максимальный элементы в строке матрицы

Hello.
Очень нужна помощь. Задача состоит в том, что нужно найти максимальный элемент в указанной строке матрицы.
Всё прекрасно получается и работает, но дело в том, что нужно сделать ИМЕННО по этому шаблону.
Динамический массив необходимо задавать только так и никак иначе.
Не могу разобраться, как верно написать тут цикл вычисления и вывода максимального элемента указанной строки.
Спасибо заранее.
p.s Матрицу заполняю уже сотый раз с клавиатуры, можно ли сюда randoмное заполнение?
#include //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include //для форматированного вывода матрицы
#include //прототип функций русификации
int main(void) //имя функции main()
{
SetConsoleCP(1251); //вызов функций русификации
SetConsoleOutputCP(1251);
int str, stlb, nstlb;
cout << "Введите количество строк и столбцов в матрице: ";
cin >> str >> stlb; //задаем количество строк и столбцов в матрице
int* matr = new int[str * stlb]; //объявляем матрицу динамически
int N; //переменная под количество
int i, j, max;
int* p = matr; //адрес первого элемента в матрице
//заполнения матрицы числами с клавиатуры
cout << "Введите матрицу\n";
for (i = 0; i < str; i++) //перебор элементов матрицы построчно
for (j = 0; j < stlb; j++)
cin >> *(p + i * stlb + j); //или p[i*stlb+j]
//вывод матрицы
cout << "\nИсходная матрица: \n";
for (i = 0; i < str; i++) //перебор элементов матрицы построчно
{
for (j = 0; j < stlb; j++)
cout << setw(8) << *(p + i * stlb + j); //или p[i*stlb+j]
cout << endl; //завершаем вывод строки матрицы
}
//вычисления количества положительных элементов произвольного
//столбца матрицы
cout << "Введите номер анализируемой строки: ";
cin >> nstlb; //задаем номер анализируемого строки
i = nstlb-1; //определяем индекс строки
max = matr[0];
for (j = 0; j < stlb; j++)
if (max < matr[i])
{
N = matr[i];
matr[i] = max;
max = N;
}
cout << "Максимальный элемент " << max << endl;
system("pause");
delete[]matr;
return 0;
}
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
int main() {
uniform_int_distribution<> uid(0, 100);
mt19937 gen{ random_device()() };
cout << "Rows, columns: ";
size_t n, m;
cin >> n >> m;
auto x = n * m;
auto matrix = new int [x];
for (auto i = 0U; i < x; ++i) matrix[i] = uid(gen);
for (auto i = 0U; i < x; ++i) {
if (i && 0 == i % m) puts("");
cout << setw(5) << matrix[i];
}
puts("");
size_t r;
do {
cout << "Row: ";
cin >> r;
--r;
} while (r >= n);
int mn, mx;
auto rm = r * m;
mn = mx = matrix[rm];
auto end = rm + m;
for (auto i = rm + 1; i != end; ++i) {
if (matrix[i] < mn) mn = matrix[i];
if (matrix[i] > mx) mx = matrix[i];
}
cout << "Max: " << mx << "\nMin: " << mn << '\n';
delete[] matrix;
system("pause > nul");
}
Про-100 Серж) Чернов
Про-100 Серж) Чернов
71 256
Лучший ответ
#include "iostream"
#include "iomanip"
#include "ctime"
#include "cstdlib"
#include "algorithm"
using namespace std;
int main(){
int n,m,k; cout<<"n m: "; cin>>n>>m; int* a=new int[n*m];
srand(time(NULL)); for(int i=0;i< n*m;i++)a[i]=rand()%199-99;
for(int i=0;i< n*m;i++){cout<< setw(4)<< a[i]; if((i+1)%m==0)cout<< endl;}
do {cout<<"\nk: "; cin>>k; } while(k>n || k< 1); k--;
cout<<"\nmax="<< *max_element(a+m*k,a+m*(k+1))<< endl;
delete []a; getchar(); getchar();}

Похожие вопросы