C/C++

Решить задачу на языке C (НЕ С++!!!)

Дан двумерный массив. Определить среднее арифметическое каждого столбца, определить максимум и минимум каждой строки.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int n,m;
do
{
printf("Введите количество строк: ");
scanf("%d", &n); /* scanf_s для visual studio */
} while(n <= 0);
do
{
printf("Введите количество столбцов: ");
scanf("%d", &m); /* scanf_s для visual studio */
} while(m <= 0);
double ** A;
/* выделяем память */
A = (double **) malloc(n * sizeof(double));
for(int x = 0; x < n; x++)
A[x] = (double *) malloc(m * sizeof(double));

srand(time(NULL));
/* генерируем значения */
for(int x = 0; x < n; x++)
{
for(int y = 0; y < m; y++)
{
A[x][y] = ( rand() % 1001 - 500 ) * 0.01;
printf("%.2lf\t", A[x][y]); /* выводим для наглядности */
}
putchar('\n');
}
putchar('\n');

/* считаем среднее арефметическое в каждом столбце */
double srednee;
for(int y = 0; y < m; y++)
{
srednee = 0.;
for(int x = 0; x < n; x++)
srednee += A[x][y];
srednee /= n;
printf("Среднее арифметическое столбца %d равно %.4lf.\n", y+1, srednee);
}

/* вычисляем максимум и минимум для каждой строки */
double max,min;
for(int x = 0; x < n; x++)
{
max = min = A[x][0];
for(int y = 0; y < m; y++)
{
if(A[x][y] > max) max = A[x][y];
if(A[x][y] < min) min = A[x][y];
}
printf("Для строки %d ", x + 1);
printf(" максимум равен %.2lf ", max);
printf(", минимум равен %.2lf.\n", min);
}

/* освобождаем память */
if(A == NULL) exit(1);
else
{
for(int x = 0; x < n; x++)
{
if(A[x] == NULL) exit(1);
else
{
free(A[x]);
A[x] = NULL;
}
}
free(A);
A = NULL;
}

return 0;
}
Денис Салеев
Денис Салеев
78 383
Лучший ответ