10. Написать функцию для нахождения суммы элементов для каждого столбца двумерного динамического массива. Поменять местами столбцы с максимальным и минимальным значением суммы.
#include <iostream>
#include <limits>
void findSumOfColumns(int** matrix, int numRows, int numCols) {
if (numRows <= 0 || numCols <= 0) {
std::cout << "Invalid matrix dimensions." << std::endl;
return;
}
int* columnSums = new int[numCols];
// Вычисление суммы элементов для каждого столбца
for (int j = 0; j < numCols; ++j) {
int sum = 0;
for (int i = 0; i < numRows; ++i) {
sum += matrix[i][j];
}
columnSums[j] = sum;
std::cout << "Sum of column " << j + 1 << ": " << sum << std::endl;
}
// Нахождение индексов столбцов с минимальной и максимальной суммой
int minSumIndex = 0;
int maxSumIndex = 0;
for (int j = 1; j < numCols; ++j) {
if (columnSums[j] < columnSums[minSumIndex]) {
minSumIndex = j;
}
if (columnSums[j] > columnSums[maxSumIndex]) {
maxSumIndex = j;
}
}
// Поменять местами столбцы с минимальной и максимальной суммой
for (int i = 0; i < numRows; ++i) {
int temp = matrix[i][minSumIndex];
matrix[i][minSumIndex] = matrix[i][maxSumIndex];
matrix[i][maxSumIndex] = temp;
}
std::cout << "Columns with min and max sums are swapped." << std::endl;
// Вывод измененной матрицы
std::cout << "Updated matrix:" << std::endl;
for (int i = 0; i < numRows; ++i) {
for (int j = 0; j < numCols; ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
delete[] columnSums;
}
int main() {
// Пример использования функции
int numRows, numCols;
std::cout << "Enter the number of rows: ";
std::cin >> numRows;
std::cout << "Enter the number of columns: ";
std::cin >> numCols;
// Выделение памяти под двумерный массив
int** matrix = new int*[numRows];
for (int i = 0; i < numRows; ++i) {
matrix[i] = new int[numCols];
}
std::cout << "Enter the elements of the matrix:" << std::endl;
for (int i = 0; i < numRows; ++i) {
for (int j = 0; j < numCols; ++j) {
std::cin >> matrix[i][j];
}
}
findSumOfColumns(matrix, numRows, numCols);
// Освобождение памяти
for (int i = 0; i < numRows; ++i) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
