Несколько операций с двумерными массивами
1 минут
Задача🔗︎
Ввести двумерный массив размерностью 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];
}
}
}
}