Найти среднее значение двухмерного массива - C (СИ)

Формулировка задачи:

#include <stdio.h>
 
double sum2d(int a, int b, const double  mass[a][b]);
 
int main(void)
{
    const int YEARS = 5;
    const int MONTHS = 12;
    const float rain[YEARS][MONTHS] = 
    {
        { 4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6 },
        { 8.5, 8.2, 1.2, 1.6, 2.4, 0.5, 2.0, 9.0, 3.0, 9.1, 4.7, 3.0 },
        { 9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4 },
        { 7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2 },
        { 7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2 },
    };
 
    printf("Среднегодовое количество осадков за 5 лет = %f",sum2d(YEARS, MONTHS, rain[YEARS][MONTHS])/YEARS);
return 0;
}
 
double sum2d(int a, int b, const double  mass[a][b])
{
    int i, j;
    int total;
    double **pt;
    **pt = mass[0][0];
 
    for (i = 0; i < a; ++i)
    {
        for(j = 0; j < b; ++j)
        {
            total+=**pt;
            ++pt;
        }
    }
return total;
}
При компиляции помимо куци предупреждений выдается следующие ошибки: rain.c:20:2: error: incompatible type for argument 3 of ‘sum2d’ printf("Среднегодовое количество осадков за 5 лет = %f",sum2d(YEARS, MONTHS, rain[YEARS][MONTHS])/YEARS); ^ rain.c:3:8: note: expected ‘const double (*)[(sizetype)(b)]’ but argument is of type ‘float’ double sum2d(int a, int b, const double mass[a][b]); Добавлено через 23 секунды по заданию считать нужно с применением указателей.

Код к задаче: «Найти среднее значение двухмерного массива - C (СИ)»

textual
#include <stdio.h>
 
#define YEARS 5
#define MONTHS 12
double sum2d(int a, int b, double mass[][MONTHS]);
 
int main(void)
{
    double rain[YEARS][MONTHS] = 
    {
        { 4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6 },
        { 8.5, 8.2, 1.2, 1.6, 2.4, 0.5, 2.0, 9.0, 3.0, 9.1, 4.7, 3.0 },
        { 9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4 },
        { 7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2 },
        { 7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2 },
    };
 
    printf("Среднегодовое количество осадков за 5 лет = %6.2f\n",sum2d(YEARS, MONTHS, rain)/YEARS);
    return 0;
}
 
double sum2d(int a, int b, double  mass[][MONTHS])
{
    int i, j;
    double total = 0;
    double *pt;
    pt = (double*)mass;
 
    for (i = 0; i < a; ++i)
    {
        for(j = 0; j < b; ++j)
            total+=*(pt++);
    }
return total;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

12   голосов, оценка 4.333 из 5


СДЕЛАЙТЕ РЕПОСТ