Указатель на массив

N0VY

Салют, народ! Помогите пофиксать проблему с выводом суммы элементов массива на экран: правильно не считает ;-;Задача: Написать функцию, которая получает указатель на двумерный массив и его размер, и возвращает среднее арифметическое элементов массива, а также количество чѐтных и нечѐтных элементов.
#include<iostream>
#include<ctime>
using namespace std;
 
// even - чётный, odd - нечётный
****** average_solver(int **matrix, int size, int row, int col);
void even_odd_counter(int **matrix, int size, int row, int col);
 
void print_matrix(int *matrix[], int row, int col)
{
    for (size_t i = 0; i < row; i++) {
        for (size_t j = 0; j < col; j++)
        {
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }
}
void random_matrix(int *matrix[], int row, int col)
{
    for (size_t i = 0; i < row; i++)
    {
        for (size_t j = 0; j < col; j++)
        {
            matrix[i][j] = rand() % 10;
        }
    }
}
 
void main()
{
    setlocale(0, "rus");
    srand(time(0));
 
    int size;
    cout << "Размер массива: " << endl;
    cin >> size;
 
    int row = size;
    int col = size;
 
 
    int **matrix = new int*[size];
    for (int i = 0; i < size; i++)
    {
        matrix[i] = new int[size];
    }
    random_matrix(matrix, size, size);
    print_matrix(matrix, size, size);
 
    cout << "Среднее арифметическое: " << average_solver(matrix, size, row, col) << endl;
    even_odd_counter(matrix, size, row, col);
 
    system("pause");
}
 
****** average_solver(int **matrix, int size, int row, int col)
{
    int sum = 0;
    int nmb_amount = 0;
 
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            sum += **matrix;
            nmb_amount++;
        }
    }
 
    cout << endl;
    cout << "sum = " << sum << endl;
    cout << "nmb_amount = " << nmb_amount << endl;
    cout << sum << " / " << nmb_amount << " = " << sum / nmb_amount << endl;
 
    int average = sum / nmb_amount;
    return average;
}
 
void even_odd_counter(int **matrix, int size, int row, int col)
{
    unsigned int even_quantity = 0;
    unsigned int odd_quantity = 0;
 
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            if (matrix[i][j] % 2 == 0 || matrix[i][j] == 2)
                even_quantity++;
            else
                odd_quantity++;
        }
    }
    cout << "Количество чётных чисел: " << even_quantity << endl;
    cout << "Количество нечётных чисел: " << odd_quantity << endl;
}
2 ответа

N0VY

sum += matrix[i][j];


N0VY

****** average_solver(int **matrix, int size, int row, int col)
{
    int sum = 0;
 
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
           sum += matrix[i][j];
    }
 
    cout << endl;
    cout << "sum = " << sum << endl;
    cout << "nmb_amount = " << row*col << endl;
    cout << sum << " / " << row*col << " = " << sum /(******)(row*col) << endl;
 
    return sum /(******)(row*col) ;
}