#include #include using namespace std; //Характеристикой строки прямоугольной матрицы называется сумма ее //положительных элементов.Перестроить заданную матрицу, переставляя в ней //строки так, чтобы значения их характеристик возрастали. //- вывести полученную матрицу; //-найти в ней количество столбцов, не содержащих нулей. int sum(int* a, int m); void output(int** a, int n, int m); bool find0(int** a, int n, int m); int main() { srand((unsigned)time(NULL)); int n, m; cout << "Enter bumber of lines = "; cin >> n; cout << "Enter number of rows = "; cin >> m; cout << endl; if (n > 20 || m > 20 || m < 1 || n < 1) { return 1; } int** a = new int* [n]; for (int i = 0; i < n; i++) { a[i] = new int[m]; } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { a[i][j] = (rand() % 11 - 5); } } output(a, n, m); cout << endl; for (int i = 0; i < n - 1; i++) { int maxSum = sum(a[i], m); int maxPos = i; for (int ii = i + 1; ii < n; ii++) { int s = sum(a[ii], m); if (s > maxSum) { maxSum = s; maxPos = ii; } } int* t = a[i]; a[i] = a[maxPos]; a[maxPos] = t; } output(a, n, m); int count = 0; for (int j = 0; j < m; j++) { if (!find0(a, n, j)) count++; } cout << endl << endl << "Number of rows without ""0"" = " << count; for (int i = 0; i < n; i++) { delete[] a[i]; } delete[] a; } int sum(int* a, int n) { int result = 0; for (int i = 0; i < n; i++) { result += a[i]; } return result; } void output(int** a, int n, int m) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << a[i][j] << " "; } cout << " " << sum(a[i], m) << endl; } } bool find0(int** a, int n, int j) { for (int i = 0; i < n; i++) { if (a[i][j] == 0) { return true; } } return false; }