Процедуры и функции. Определить, сколько раз заданное пользователем число повторяется в массиве - C (СИ)

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

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

Программа заполняет массив(20) случайными числами, запрашивает у пользователя число и с помощью процедуры определяет, сколько раз заданное пользователем число повторяется в массиве, программа выводит полученный результат на экран.

Решение задачи: «Процедуры и функции. Определить, сколько раз заданное пользователем число повторяется в массиве»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
size_t count(const int * array, const size_t size, const int value) {
    return ( size ) ? ( *array == value ) + count(array + 1, size - 1, value) : 0;
}
 
void fill(int * array, size_t size, int top) {
    while ( size-- )
        array[size] = rand() % top;
}
 
void dump(const int * array, size_t size) {
    while ( size-- )
        printf("%d%c", *array++, ( size ) ? ' ' : '\n');
}
 
#define SIZE 20
#define TOP_VALUE 10
 
int main(void) {
    int array[SIZE], value;
    
    srand(time(NULL));
    
    while ( printf("Value: ") && scanf("%d", &value) == 1 ) {
        fill(array, SIZE, TOP_VALUE);
        printf("Array: ");
        dump(array, SIZE);
        printf("Value %d meets %u times.\n", value, count(array, SIZE, value));
    }
    
    return 0;
}

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

  1. Программа включает в себя три функции: count, fill и dump.
  2. Функция count принимает три аргумента: указатель на начало массива, размер массива и значение, которое нужно найти в массиве.
  3. Функция fill принимает три аргумента: указатель на начало массива, размер массива и верхнюю границу для генерации случайных чисел.
  4. Функция dump принимает два аргумента: указатель на начало массива и размер массива.
  5. В функции main создается массив array типа int с размером SIZE.
  6. Задается начальное значение для генератора случайных чисел с помощью srand(time(NULL)).
  7. В цикле while запрашивается значение от пользователя с помощью printf(Value: ) && scanf(%d, &value) == 1.
  8. После получения значения, массив array заполняется случайными числами от 0 до TOP_VALUE с помощью fill(array, SIZE, TOP_VALUE).
  9. Выводится содержимое массива с помощью dump(array, SIZE).
  10. Выводится количество вхождений заданного значения в массиве с помощью printf(Value %d meets %u times.\n, value, count(array, SIZE, value)).
  11. После выхода из цикла while, программа завершается с помощью return 0.
  12. Верхняя граница для генерации случайных чисел TOP_VALUE задается с помощью #define TOP_VALUE 10.
  13. Размер массива SIZE задается с помощью #define SIZE 20.
  14. В функции fill используется цикл while для заполнения массива.
  15. В функции dump используется цикл while для вывода содержимого массива.
  16. В функции count используется рекурсия для подсчета количества вхождений заданного значения в массиве.
  17. В функции main используется цикл while для повторного запроса значения от пользователя.
  18. В функции fill используется функция rand() для генерации случайных чисел.
  19. В функции dump используется функция printf() для вывода содержимого массива.
  20. В функции count используется оператор % для проверки равенства значения в массиве заданному значению.

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


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

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

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