Заполнить целочисленный двухмерный массив размера NN случайными числами в диапазоне от -100 до 200 - C (СИ)
Формулировка задачи:
1. Заполнить целочисленный двухмерный массив размера NN случайными числами в диапазоне от -100 до 200. Определить сумму и среднее арифметическое элементов, значения которых больше заданного числа F и оканчиваются на 5
Решение задачи: «Заполнить целочисленный двухмерный массив размера NN случайными числами в диапазоне от -100 до 200»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int **arr, *p, N, F, i, j, sum = 0, count = 0; srand(time(NULL)); puts("Enter size matrix and number F:"); while(2 != scanf("%d%d", &N, &F)){ puts("Incorrect data entering!Try again."); while(getchar() != '\n'); } arr = malloc(N * sizeof**arr); p = malloc(N * N * sizeof*p); if(!arr || !p){ fprintf(stderr, "Error memory allocate!"); exit(1); } for(i = 0; i < N; i++, putchar('\n')){ arr[i] = p + i * N; for(j = 0; j < N; j++){ printf("%4d", arr[i][j] = rand() % 300 - 100); if(arr[i][j] > F && arr[i][j] % 10 == 5){ sum += arr[i][j]; count++; } } } putchar('\n'); count ? printf("sum = %d average = %g\n", sum, (double)sum / count) : puts("Not found"); free(arr); free(p); return 0; }
Объяснение кода листинга программы
Код решает задачу заполнения двумерного массива случайными числами и поиска числа, большего заданного.
- #include
Включает стандартную библиотеку для работы с консолью. - #include
Включает стандартную библиотеку для работы с памятью. - #include
Включает стандартную библиотеку для работы со временем. - int main() Функция main() является точкой входа в программу.
- int arr, *p, N, F, i, j, sum = 0, count = 0;** Объявляет двумерный массив arr размером NxN и одномерный массив p размером NxN. Также объявляет переменные N, F, i, j, sum и count.
- srand(time(NULL)); Инициализирует генератор случайных чисел текущим временем.
- puts(
Enter size matrix and number F:
); Выводит приглашение для ввода размера матрицы и числа F. - while(2 != scanf(
%d%d
, &N, &F)){ Организует цикл, который будет выполняться до тех пор, пока не будут введены корректные данные. - puts(
Incorrect data entering!Try again.
); Выводит сообщение об ошибке и приглашение для повторного ввода данных. - while(getchar() != '\n'); Ожидает нажатия клавиши Enter.
- *arr = malloc(N sizeofarr); Выделяет память под массив arr.
- *p = malloc(N N sizeofp);** Выделяет память под массив p.
- if(!arr || !p){ Проверяет, удалось ли выделить память.
- fprintf(stderr,
Error memory allocate!
); Выводит сообщение об ошибке. - exit(1); Завершает программу с кодом ошибки.
- for(i = 0; i < N; i++, putchar('\n')){ Организует цикл для заполнения массива arr.
- *arr[i] = p + i N;** Выделяет память под i-ый подмассив матрицы arr.
- for(j = 0; j < N; j++){ Организует цикл для заполнения i-го подмассива матрицы arr.
- printf(
%4d
, arr[i][j] = rand() % 300 - 100); Заполняет элемент массива случайным числом в диапазоне от -100 до 200. - if(arr[i][j] > F && arr[i][j] % 10 == 5){ Проверяет, является ли элемент больше числа F и кратен ли он 10.
- sum += arr[i][j]; Если условие выполняется, увеличивает сумму на значение элемента.
- count++; Увеличивает счетчик на единицу.
- } Конец условия.
- putchar('\n'); Выводит символ новой строки.
- count ? printf(
sum = %d average = %g\n
, sum, (double)sum / count) : puts(Not found
); Выводит сообщение с суммой и средним значением, если число найдено, иначе выводит сообщениеNot found
. - free(arr); Освобождает память, выделенную под массив arr.
- free(p); Освобождает память, выделенную под массив p.
- return 0; Завершает программу без ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д