Задача
Ввести двумерный массив размерностью 6х5. Рассчитать в одной функции сумму и среднее арифметическое элементов заданного столбца двумерного массива, расположенных между двумя заданными индексами. Написать функцию умножения элементов произвольной строки на квадратный корень из первого значения в данной строке. Ввод массива и исходных данных выполнить в функции ввода, вывод массива и результатов – в функции вывода.
Решение на C++
#include <iostream> #include <math.h> #define ARRAY_ROWS 6 #define ARRAY_COLUMNS 5 int **create_array(); void input_data(int **array); void array_sum_arif(int **array, int &sum, float &arif); void array_proc(int **input_array, int **output_array); void output_data(int **array, int sum, float arif); void print_array(int **array); int main() { // ввод данных int **input_array = create_array(); input_data(input_array); // нахождение суммы и среднего арифметического int sum; float arif; array_sum_arif(input_array, sum, arif); // умножение элементов строки на корень нулевого элемента int **output_array = create_array(); array_proc(input_array, output_array); // вывод данных print_array(input_array); output_data(output_array, sum, arif); return 0; } int **create_array() { int **array = new int *[ARRAY_ROWS]; // выделим память для каждого элемента массива for (int i = 0; i < ARRAY_ROWS; i++) { array[i] = new int [ARRAY_COLUMNS]; } return array; } void input_data(int **array) { int i, j; for (i = 0; i < ARRAY_ROWS; i++) { for (j = 0; j < ARRAY_COLUMNS; j++) { std::cout << "Введи значение элемента " << i << ", " << j << ": "; std::cin >> array[i][j]; } } } void print_array(int **array) { std::cout << "Массив: " << std::endl; int i, j; for (i = 0; i < ARRAY_ROWS; i++) { std::cout << i << ": "; for (j = 0; j < ARRAY_COLUMNS; j++) { std::cout << array[i][j] << " "; } std::cout << std::endl; } std::cout << std::endl; } void output_data(int **array, int sum, float arif) { std::cout << "Результат: " << std::endl; print_array(array); std::cout << "Сумма: " << sum << std::endl; std::cout << "Среднее арифметическое: " << arif << std::endl; std::cout << std::endl; } void array_sum_arif(int **array, int &sum, float &arif) { int column; std::cout << "Введите столбец для суммы и среднего арифметического: "; std::cin >> column; int row_up; std::cout << "Введите верхнюю границу для суммы и среднего арифметического: "; std::cin >> row_up; int row_down; std::cout << "Введите нижнюю границу для суммы и среднего арифметического: "; std::cin >> row_down; sum = 0; for (int i = row_up; i <= row_down; i++) { sum += array[i][column]; } arif = ((float)sum) / ((float)(row_down - row_up + 1)); } void array_proc(int **input_array, int **output_array) { int row; std::cout << "Введите строку для умножения на корень из первого элемента: "; std::cin >> row; int i, j; for (i = 0; i < ARRAY_ROWS; i++) { for (j = 0; j < ARRAY_COLUMNS; j++) { if (row == i) { output_array[row][j] = input_array[row][j] * sqrt(input_array[row][0]); } else { output_array[i][j] = input_array[i][j]; } } } }