Подпрограмма: Вводить числа до тех пор пока не будет введен 0, после ввода 0, вывести все введенные числа - C (СИ)
Формулировка задачи:
Вводить числа до тех пор пока не будет введен 0. Если будет введен 0, то вывести все введенные числа. помогите пожалуйста сделать подпрограммой.
Решение задачи: «Подпрограмма: Вводить числа до тех пор пока не будет введен 0, после ввода 0, вывести все введенные числа»
textual
Листинг программы
#include <stdio.h>
int fill(int buff[], size_t size) {
int val;
if (size && (scanf("%d", &val) == 1) && val) {
*buff = val;
return fill(buff + 1, size - 1) + 1;
}
return 0;
}
void func(int buff[], size_t size) {
int cnt = fill(buff, size);
while (cnt--) {
printf("%d ", *buff++);
}
}
int main() {
int buff[64];
func(buff, sizeof(buff) / sizeof(*buff));
return 0;
}
Объяснение кода листинга программы
Вывод: Ввод чисел до тех пор, пока не введется 0, после чего выводятся все введенные числа.
- Подпрограмма fill() отвечает за заполнение массива buff числами, пока не введется 0. Она использует функцию scanf() для ввода числа, проверяет его на 0 и записывает в массив. Рекурсивно вызывает себя для оставшейся части массива. Возвращает количество введенных чисел.
- Функция func() использует функцию fill() для заполнения массива buff. После заполнения выводит все числа, используя цикл while.
- В функции main() создается массив buff размером 64 и вызывается функция func().
- Ввод чисел и вывод их на экран выполняется в консоли.