Необходимо выполнить заданную
обработку числового двумерного массива, имеющего произвольное
количество строк (N) и столбцов (M). В каждом из вариантов содержатся
ограничения на максимальные значения величин N и M. Элементы массива
должны вводиться с клавиатуры и для их ввода следует разработать
функцию. Обработка, предусмотренная заданием, и вывод нескалярного
результата выполняются с помощью функций.

#include <iostream>
#include <iomanip>
using namespace std;
unsigned integer(const char* msg) {
cout << msg;
unsigned value;
cin >> value;
return value;
}
void output(int** matrix, size_t n, size_t m) {
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < m; ++j) cout << setw(5) << matrix[i][j];
puts("");
}
puts("");
}
void input(int** matrix, size_t n, size_t m) {
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < m; ++j) {
cin >> matrix[i][j];
}
}
system("cls");
output(matrix, n, m);
}
int sum(int* row, size_t m) {
auto s = 0;
for (auto i = 0U; i < m; ++i) s += row[i];
return s;
}
void row_swap(int* a, int* b, size_t m) {
for (auto i = 0U; i < m; ++i) swap(a[i], b[i]);
}
int main() {
auto n = integer("n: ");
auto m = integer("m: ");
auto matrix = new int*[n];
for (auto i = 0U; i < n; ++i) matrix[i] = new int[m];
input(matrix, n, m);
auto sm = sum(matrix[0], m);
auto mns = sm, mxs = sm;
size_t mni = 0, mxi = 0;
for (auto i = 1U; i < n; ++i) {
sm = sum(matrix[i], m);
if (sm < mns) {
mns = sm;
mni = i;
}
if (sm > mxs) {
mxs = sm;
mxi = i;
}
}
row_swap(matrix[mni], matrix[mxi], m);
output(matrix, n, m);
for (auto i = 0U; i < n; ++i) delete[] matrix[i];
delete[] matrix;
system("pause > nul");
}