Несколько операций с двумерными массивами

Задача

Ввести двумерный массив размерностью 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];
            }
        }
    }
}
Перейти к верхней панели