Функция с переменным числом параметров в С
Есть два задания по функции с переменным числом параметров. Первое я сделал, но вот второе не совсем понимаю как правильно написать. Они похожи, но немного отличаются. Вот первое:
В функцию с переменным числом параметров поступают целые числа, конец списка – значение -1. Найти и напечатать все четные числа, не содержащие цифры 7. Найти их количество или вывести уведомление об их отсутствии.
Вот второе задание, которое не могу решить:
В функцию с переменным числом параметров поступают положительные целые числа, конец списка – значение –1. Счесть, сколько раз встречается каждая цифра в заданном числе.
А это мой ответ к первому заданию:
func.c
#include <stdio.h>
#include <math.h>
#include <stdarg.h>
#include "func.h"
int containsSeven(int num) {
num = num < 0 ? -num : num;
while (num > 0) {
if (num % 10 == 7) return 1;
num /= 10;
}
return 0;
}
int find_nums(int num, ...) {
int n = num;
va_list args;
va_start(args, num);
int count = 0;
while (n != -1) {
if (n % 2 == 0 && !containsSeven(n)) {
printf("%d ", n);
count++;
}
n = va_arg(args, int);
}
va_end(args);
return count;
}
func.h
#ifndef LAB06_02
#define LAB06_02
int containsSeven(int num);
int find_nums(int num, ...);
#endif
main.c
#include <stdio.h>
#include <conio.h>
#include "func.h"
#define MAX_SIZE 25
int main() {
int arr[MAX_SIZE] = { 0 };
printf("Numbers: ");
for (int i = 0; i < MAX_SIZE; i++) {
scanf("%d", arr + i);
if (arr[i] == -1) break;
}
printf("Result: ");
int quantity = find_nums(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9],
arr[10], arr[11], arr[12], arr[13], arr[14], arr[15], arr[16], arr[17], arr[18],
arr[19], arr[20], arr[21], arr[22], arr[23], arr[24]);
if (quantity != 0) printf("\nFinded numbers: %d\n", quantity);
else printf("\nNo such numbers.");
getch();
return 0;
}