Подсчитать среднее арифметическое элементов двумерного массива - C (СИ)

Узнай цену своей работы

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

Задание: Подсчитать среднее арифметическое элементов двумерного массива. Ввод: Из консоли. Подается число n - количество строк и столбцов в массиве, затем элементы массива построчно. Ограничения: 1?n?100, -1000?Array[n]?1000, время работы программы не более 2 с. Вывод: Вещественное число с точностью 4 знака, равное среднему арифметическому элементов двумерного массива.

Решение задачи: «Подсчитать среднее арифметическое элементов двумерного массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
#define rand_generation
 
#ifdef rand_generation
#include <time.h>
#endif
 
int main() {
    int n;
    setlocale(LC_ALL, "");
 
#ifdef rand_generation
    srand((unsigned)time(NULL));
#endif
 
    while (1) {
        printf("Введите n  с отрезка [1;100]: ");
        scanf("%i", &n);
        if (n > 0 && n <= 100)
            break;
        else printf("Неверный ввод!!! Попробуйте снова!!!\n");
    }
    int** Array = (int**)malloc(sizeof(int*)*n);
    int i = 0, j;
    float middle_ar = 0.0f;
    for (; i < n; i++) {
        Array[i] = (int*)malloc(sizeof(int)*n);
        for (j = 0;j < n;j++) {
#ifndef rand_generation
            while (1) {
                printf("Введите Array[%i][%i] с отрезка [-1000;1000]: ", i, j);
                scanf("%i", &Array[i][j]);
                if (Array[i][j] >= -1000 && Array[i][j] <= 1000)
                    break;
                else printf("Неверный ввод!!! Попробуйте снова!!!\n");
            }
#elif defined rand_generation
            Array[i][j] = rand() % 2001 - 1000;
            printf("%i\t", Array[i][j]);
#endif
            middle_ar += (float)Array[i][j];
        }
        printf("\n");
    }
    printf("\nСреднее арифметическое массива: %.4f", middle_ar / (n*n));
    return NULL;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdio.h, stdlib.h, locale.h
  2. Определяется макрос rand_generation, который в дальнейшем будет использоваться для генерации случайных чисел.
  3. Если макрос rand_generation определен, то включается time.h для инициализации генератора случайных чисел.
  4. Объявляется переменная n типа int, которая будет использоваться для хранения размера массива.
  5. Устанавливается локальная настройка для вывода русского языка.
  6. Если макрос rand_generation определен, то генерируется начальное значение для генератора случайных чисел.
  7. В цикле while(1) происходит запрос на ввод значения переменной n и проверка корректности введенного значения.
  8. Если значение n больше 0 и меньше или равно 100, то цикл прерывается и происходит переход к следующему этапу.
  9. В случае неверного ввода, программа выводит сообщение об ошибке и просит повторить попытку.
  10. Динамически выделяется память под двумерный массив типа int.
  11. Инициализируются начальные значения i и j, которые будут использоваться для обхода массива.
  12. Создается переменная middle_ar типа float, которая будет использоваться для хранения суммы элементов массива.
  13. В цикле for происходит обход всех элементов массива.
  14. Для каждого элемента массива динамически выделяется память под одномерный массив типа int.
  15. В цикле for происходит обход всех элементов второмерного массива.
  16. Если макрос rand_generation не определен, то происходит запрос на ввод значения элемента массива и проверка корректности введенного значения.
  17. Если значение элемента массива введено корректно, то происходит добавление этого значения к переменной middle_ar.
  18. Если макрос rand_generation определен, то происходит вывод значения элемента массива.
  19. После завершения циклов происходит вывод суммы элементов массива.
  20. Возвращается NULL.

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы