Подсчитать среднее арифметическое элементов двумерного массива - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д