7. Написать функцию для нахождения для каждого столбца двумерного динамического массива отклонение его элементов от среднего значения для этого столбца.
#include <iostream>
void findDeviationFromAverage(int** matrix, int numRows, int numCols) {
if (numRows <= 0 || numCols <= 0) {
std::cout << "Invalid matrix dimensions." << std::endl;
return;
}
// Вычисление среднего значения для каждого столбца
double* columnAverages = new double[numCols];
for (int j = 0; j < numCols; ++j) {
double sum = 0.0;
for (int i = 0; i < numRows; ++i) {
sum += matrix[i][j];
}
columnAverages[j] = sum / numRows;
}
// Вычисление отклонения от среднего значения для каждого столбца
for (int j = 0; j < numCols; ++j) {
std::cout << "Deviation from average for column " << j + 1 << ": ";
for (int i = 0; i < numRows; ++i) {
double deviation = matrix[i][j] - columnAverages[j];
std::cout << deviation << " ";
}
std::cout << std::endl;
}
delete[] columnAverages;
}
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];
}
}
findDeviationFromAverage(matrix, numRows, numCols);
// Освобождение памяти
for (int i = 0; i < numRows; ++i) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
