Определить, есть ли в числе повторяющиеся цифры - C (СИ)
Формулировка задачи:
/*Выводит повторяющиеся цифры в числе*/
#include <stdio.h>
#include <locale.h>
int main ()
{
int digit_seen[10]={0};
int digit;
long n;
setlocale(LC_ALL,"Rus");
printf("Введите число: ");
scanf("%ld", &n);
while (n>0){
digit=n%10;
if(digit_seen[digit])
break;
digit_seen[digit]=1;
n/=10;
}
if(n>0)
printf("Есть повторяющиеся цифры: \n");
else
printf("Повторяющихся цифр нет\n");
return 0;
}Решение задачи: «Определить, есть ли в числе повторяющиеся цифры»
textual
Листинг программы
/*Выводит повторяющиеся цифры в числе*/
#include <stdio.h>
#include <locale.h>
#include <string.h>
int main ()
{
int digit_seen[10];
memset(digit_seen, 0, sizeof(digit_seen));
int find = 0;
int digit;
long n;
setlocale(LC_ALL,"Rus");
printf("Введите число: ");
scanf("%ld", &n);
while (n>0) {
digit=n%10;
if (++digit_seen[digit] > 1) {
find = 1;
}
n/=10;
}
if(find) {
printf("Есть повторяющиеся цифры: ");
for (digit = 0; digit < 10; ++digit) {
if (digit_seen[digit] > 1) {
printf("%d", digit);
}
}
}
else
printf("Повторяющихся цифр нет\n");
return 0;
}
Объяснение кода листинга программы
В данном коде осуществляется проверка наличия повторяющихся цифр в числе, введенном пользователем.
- Создается массив digit_seen, который будет отслеживать количество вхождений каждой цифры от 0 до 9. Изначально все элементы массива устанавливаются равными 0.
- Устанавливается значение переменной find равным 0, которая будет указывать на наличие повторяющихся цифр.
- Вводится число, которое пользователь должен ввести. Числ вводится в переменную n типа long, что позволяет вводить числа с плавающей точкой.
- Происходит обработка введенного числа. Для этого число делится на 10 (что позволяет получить последнюю цифру) и к остатку от деления прибавляется единица. Таким образом, в переменную digit записывается очередная цифра числа.
- Значение переменной digit используется для увеличения значения соответствующего элемента массива digit_seen. Если значение элемента становится больше 1, то это означает, что данная цифра повторяется в числе более одного раза, и значение переменной find устанавливается равным 1.
- После обработки всех цифр числа, программа проверяет значение переменной find. Если оно равно 1, то выводится сообщение о наличии повторяющихся цифр, а затем выводятся все повторяющиеся цифры.
- Если значение переменной find равно 0, то выводится сообщение об отсутствии повторяющихся цифр.