Как доработать код, чтобы выводилась информация, что есть повторяющиеся числа?

Нужно написать программу на языке Cи. Программа должна проверять, есть ли в числе цифры которые повторяются, и выводит какое число сколько раз повторяется.

Например, вводим число: 123333221 Программа должна выдавать:

{Есть числа что повторяются: 1 (2 раза), 2 (3 раза), 3 (4 раза).}

А если нет повторяющихся так и пишет:

Нет повторов

Сделать отдельную функцию.

Есть код, нужно, чтобы еще выводило что-то вроде такого:

Есть числа что повторяются: 1 (2 раза), 2 (3 раза), 3 (4 раза)

#include <stdio.h>
#include <locale.h>
int check_repeated_digits(long n);
int main(){
long n;
setlocale(LC_ALL, "Ukr");
printf("Введіть число: ");
scanf("%ld", &n);
if (check_repeated_digits(n))
printf("Є цифри, що повторюються\n");
else
printf("Немає цифр, що повторюються\n");
return 0;
}
int check_repeated_digits(long n){
int digit_seen[10] = {0};
int digit;
while (n > 0) {
digit = n % 10;
if (digit_seen[digit]) 
break; 
digit_seen[digit] = 1;
n /= 10;
}
return n;
}

Ответы (1 шт):

Автор решения: Harry

Примерно так -

void check_repeated_digits(long n);

int main(){
    long n;
    setlocale(LC_ALL, "Ukr");
    printf("Введiть число: ");
    scanf("%ld", &n);
    check_repeated_digits(n);
}

void check_repeated_digits(long n)
{
    int d[10] = {0};
    while (n) {
        d[n%10]++;
        n /= 10;
    }
    int rep = 0;
    for(int i = 0; i < 10; ++i)
        if (d[i] > 1) { rep = 1; break; }
    if (rep)
    {
        printf("Є цифри, що повторюються\n");
        for(int i = 0; i < 10; ++i)
            if (d[i] > 1) printf("%d: %d раз\n",i,d[i]);
    }
    else
        printf("Немає цифр, що повторюються\n");
}

но правильнее читать не число, а строку — тогда число может быть любого размера, а не только до 2 миллиардов...

→ Ссылка