Заполнить целочисленный двухмерный массив размера NN случайными числами в диапазоне от -100 до 200 - C (СИ)

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

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

1. Заполнить целочисленный двухмерный массив размера NN случайными числами в диапазоне от -100 до 200. Определить сумму и среднее арифметическое элементов, значения которых больше заданного числа F и оканчиваются на 5

Решение задачи: «Заполнить целочисленный двухмерный массив размера NN случайными числами в диапазоне от -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;
}

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

Код решает задачу заполнения двумерного массива случайными числами и поиска числа, большего заданного.

  1. #include Включает стандартную библиотеку для работы с консолью.
  2. #include Включает стандартную библиотеку для работы с памятью.
  3. #include Включает стандартную библиотеку для работы со временем.
  4. int main() Функция main() является точкой входа в программу.
  5. int arr, *p, N, F, i, j, sum = 0, count = 0;** Объявляет двумерный массив arr размером NxN и одномерный массив p размером NxN. Также объявляет переменные N, F, i, j, sum и count.
  6. srand(time(NULL)); Инициализирует генератор случайных чисел текущим временем.
  7. puts(Enter size matrix and number F:); Выводит приглашение для ввода размера матрицы и числа F.
  8. while(2 != scanf(%d%d, &N, &F)){ Организует цикл, который будет выполняться до тех пор, пока не будут введены корректные данные.
  9. puts(Incorrect data entering!Try again.); Выводит сообщение об ошибке и приглашение для повторного ввода данных.
  10. while(getchar() != '\n'); Ожидает нажатия клавиши Enter.
  11. *arr = malloc(N sizeofarr); Выделяет память под массив arr.
  12. *p = malloc(N N sizeofp);** Выделяет память под массив p.
  13. if(!arr || !p){ Проверяет, удалось ли выделить память.
  14. fprintf(stderr, Error memory allocate!); Выводит сообщение об ошибке.
  15. exit(1); Завершает программу с кодом ошибки.
  16. for(i = 0; i < N; i++, putchar('\n')){ Организует цикл для заполнения массива arr.
  17. *arr[i] = p + i N;** Выделяет память под i-ый подмассив матрицы arr.
  18. for(j = 0; j < N; j++){ Организует цикл для заполнения i-го подмассива матрицы arr.
  19. printf(%4d, arr[i][j] = rand() % 300 - 100); Заполняет элемент массива случайным числом в диапазоне от -100 до 200.
  20. if(arr[i][j] > F && arr[i][j] % 10 == 5){ Проверяет, является ли элемент больше числа F и кратен ли он 10.
  21. sum += arr[i][j]; Если условие выполняется, увеличивает сумму на значение элемента.
  22. count++; Увеличивает счетчик на единицу.
  23. } Конец условия.
  24. putchar('\n'); Выводит символ новой строки.
  25. count ? printf(sum = %d average = %g\n, sum, (double)sum / count) : puts(Not found); Выводит сообщение с суммой и средним значением, если число найдено, иначе выводит сообщение Not found.
  26. free(arr); Освобождает память, выделенную под массив arr.
  27. free(p); Освобождает память, выделенную под массив p.
  28. return 0; Завершает программу без ошибок.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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