Подсчитать среднее арифметическое элементов двумерного массива - 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;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h, stdlib.h, locale.h
- Определяется макрос rand_generation, который в дальнейшем будет использоваться для генерации случайных чисел.
- Если макрос rand_generation определен, то включается time.h для инициализации генератора случайных чисел.
- Объявляется переменная n типа int, которая будет использоваться для хранения размера массива.
- Устанавливается локальная настройка для вывода русского языка.
- Если макрос rand_generation определен, то генерируется начальное значение для генератора случайных чисел.
- В цикле while(1) происходит запрос на ввод значения переменной n и проверка корректности введенного значения.
- Если значение n больше 0 и меньше или равно 100, то цикл прерывается и происходит переход к следующему этапу.
- В случае неверного ввода, программа выводит сообщение об ошибке и просит повторить попытку.
- Динамически выделяется память под двумерный массив типа int.
- Инициализируются начальные значения i и j, которые будут использоваться для обхода массива.
- Создается переменная middle_ar типа float, которая будет использоваться для хранения суммы элементов массива.
- В цикле for происходит обход всех элементов массива.
- Для каждого элемента массива динамически выделяется память под одномерный массив типа int.
- В цикле for происходит обход всех элементов второмерного массива.
- Если макрос rand_generation не определен, то происходит запрос на ввод значения элемента массива и проверка корректности введенного значения.
- Если значение элемента массива введено корректно, то происходит добавление этого значения к переменной middle_ar.
- Если макрос rand_generation определен, то происходит вывод значения элемента массива.
- После завершения циклов происходит вывод суммы элементов массива.
- Возвращается NULL.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д