Процедуры и функции. Определить, сколько раз заданное пользователем число повторяется в массиве - 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; }
Объяснение кода листинга программы
- Программа включает в себя три функции:
count
,fill
иdump
. - Функция
count
принимает три аргумента: указатель на начало массива, размер массива и значение, которое нужно найти в массиве. - Функция
fill
принимает три аргумента: указатель на начало массива, размер массива и верхнюю границу для генерации случайных чисел. - Функция
dump
принимает два аргумента: указатель на начало массива и размер массива. - В функции
main
создается массивarray
типаint
с размеромSIZE
. - Задается начальное значение для генератора случайных чисел с помощью
srand(time(NULL))
. - В цикле
while
запрашивается значение от пользователя с помощьюprintf(
Value:) && scanf(
%d, &value) == 1
. - После получения значения, массив
array
заполняется случайными числами от 0 доTOP_VALUE
с помощьюfill(array, SIZE, TOP_VALUE)
. - Выводится содержимое массива с помощью
dump(array, SIZE)
. - Выводится количество вхождений заданного значения в массиве с помощью
printf(
Value %d meets %u times.\n, value, count(array, SIZE, value))
. - После выхода из цикла
while
, программа завершается с помощьюreturn 0
. - Верхняя граница для генерации случайных чисел
TOP_VALUE
задается с помощью#define TOP_VALUE 10
. - Размер массива
SIZE
задается с помощью#define SIZE 20
. - В функции
fill
используется циклwhile
для заполнения массива. - В функции
dump
используется циклwhile
для вывода содержимого массива. - В функции
count
используется рекурсия для подсчета количества вхождений заданного значения в массиве. - В функции
main
используется циклwhile
для повторного запроса значения от пользователя. - В функции
fill
используется функцияrand()
для генерации случайных чисел. - В функции
dump
используется функцияprintf()
для вывода содержимого массива. - В функции
count
используется оператор%
для проверки равенства значения в массиве заданному значению.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д