Это можно сделать всевозможными
способами. Например, с контейнерами
типа вектор, представляющими из себя
динамические массивы, весьма удобные
для работы:
#include <vector>
#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
int m, maxi;
vector <int> Y;
vector <vector <int>> A = {{7, 3, 0, 1, 2},
{9, -4, 18, 5, 7}, {3, 1, 1, 5, 2}};
for (auto a: A)
{
maxi = a[0];
for (auto b: a)
{
cout << setw(4) << b << ' ';
if (b > maxi) maxi = b;
}
Y.push_back(maxi);
cout << "|" << setw(4) << maxi << endl;
}
cout << "Row Maximums: ";
for (m = 0; m < Y.size(); ++m)
cout << m+1 << ") " << Y[m] << "; ";
cout << "\b\b." << endl;
}
Обычные массивы, относящиеся к менее развитым языковым средствам, в современном C++ играют роль атавизма. Но у Вас, вообще-то, должна включаться своя творческая фантазия. Вот как можно сделать безо всего лишнего:
#include <iomanip>
#include <iostream>
int main()
{
int l, m, maxi, Y[3],
A[3][5] = {{7, 3, 0, 1, 2}, {9, -4, 18, 5, 7}, {3, 1, 1, 5, 2}};
for (l = 0; l < 3; ++l)
{
maxi = A[l][0];
for (m = 1; m < 5; ++m)
{
std::cout << std::setw(4) << A[l][m] << ' ';
if (A[l][m] > maxi) maxi = A[l][m];
}
Y[l] = maxi;
std::cout << "|" << std::setw(4) << Y[l] << std::endl;
}
}
Видите ведь, что ни модуль vector, ни библиотека algorithm тут совершенно не требуются...