Напишите код программы на c++ для решения следующей задачи: дана матрица размером m*n. Вычислите суммы элементов каждого столбца. Определите наибольшее значение этих сумм и номер соответствующего столбца.
// Выделение памяти и ввод матрицы cout << "m = "; cin >> m; cout << "n = "; cin >> n;
int **matrix = new int*[m]; for (int i = 0; i < m; ++i) { matrix[i] = new int[n]; for (int j = 0; j < n; ++j) cin >> matrix[i][j]; }
// Вычисление суммы элементов каждого столбца. Определение наибольшего // значения этих сумм и номер соответсвующего столбца int sum, max_sum = INT_MIN, max_column; for (int j = 0; j < n; ++j) { sum = 0; for (int i = 0; i < m; ++i) sum += matrix[i][j]; cout << "Column " << j << " - sum " << sum << endl;
if (sum > max_sum) { max_sum = sum; max_column = j; } } cout << "Max sum in column " << max_column << ". Max sum is " << max_sum << "." << endl;
// Удаление матрицы for (int i = 0; i < m; ++i) delete[] matrix[i]; delete[] matrix; }
Answers & Comments
using namespace std;
int main()
{
int m, n;
// Выделение памяти и ввод матрицы
cout << "m = ";
cin >> m;
cout << "n = ";
cin >> n;
int **matrix = new int*[m];
for (int i = 0; i < m; ++i)
{
matrix[i] = new int[n];
for (int j = 0; j < n; ++j)
cin >> matrix[i][j];
}
// Вычисление суммы элементов каждого столбца. Определение наибольшего
// значения этих сумм и номер соответсвующего столбца
int sum, max_sum = INT_MIN, max_column;
for (int j = 0; j < n; ++j)
{
sum = 0;
for (int i = 0; i < m; ++i)
sum += matrix[i][j];
cout << "Column " << j << " - sum " << sum << endl;
if (sum > max_sum)
{
max_sum = sum;
max_column = j;
}
}
cout << "Max sum in column " << max_column << ". Max sum is " << max_sum << "." << endl;
// Удаление матрицы
for (int i = 0; i < m; ++i)
delete[] matrix[i];
delete[] matrix;
}