Определить, сколько цифр содержит заданное целое число - C (СИ)
Формулировка задачи:
Помогите пожалуйста.
Использовать стандартные функции и арифметические операторы; изучить операторы отношения и присваивания, логические
операции, условный оператор и оператор-переключатель; научиться использовать в программах операторы цикла. Написать программы на изученные темы.
Определить, сколько цифр содержит заданное целое число и имеются ли в нем
повторяющиеся цифры.
Решение задачи: «Определить, сколько цифр содержит заданное целое число»
textual
Листинг программы
int main(void) {
int n0 = 0, n1 = 0, n2 = 0, n3 =0, n4 = 0, n5 = 0, n6 = 0, n7 = 0, n8 = 0,n9 = 0, x = 0;//x - введенное число
printf("To determine how many digits it contains a given integer and whether it has repeating digits.\n\n");
printf("Enter x \n");
while (1) {
printf("x = ");
if (scanf("%lf", &x) == 1 )
break;
scanf("%*[^\n]%*c");
printf("Entered is not the correct value. Enter again \n");
}
//int x = 1234233;
bool noRepeatDigit = true;
int nDigit;
for (nDigit = 0; x!= 0; nDigit++)
{
if (noRepeatDigit)
{
switch (x % 10)
{
case 0: if (++n0 > 1) noRepeatDigit = false; break;
case 1: if (++n1 > 1) noRepeatDigit = false; break;
case 2: if (++n1 > 1) noRepeatDigit = false; break;
case 3: if (++n1 > 1) noRepeatDigit = false; break;
case 4: if (++n1 > 1) noRepeatDigit = false; break;
case 5: if (++n1 > 1) noRepeatDigit = false; break;
case 6: if (++n1 > 1) noRepeatDigit = false; break;
case 7: if (++n1 > 1) noRepeatDigit = false; break;
case 8: if (++n1 > 1) noRepeatDigit = false; break;
case 9: if (++n9 > 1) noRepeatDigit = false; break;
}
}
x /= 10;
}
printf("the number : %d\n", x);
printf("The number of digits: %d\n", nDigit);
if (noRepeatDigit)
puts("Repeated numbers - no ");
else
puts("Repeated numbers - yes");
return 0;
}
Объяснение кода листинга программы
В этом коде определенная последовательность цифр в числе проверяется на повторяющиеся цифры. Если число содержит повторяющиеся цифры, код выведет сообщение Repeated numbers - yes, в противном случае - Repeated numbers - no.
- Создаются переменные для хранения количества цифр от 0 до 9: n0, n1, n2, n3, n4, n5, n6, n7, n8, n9.
- Создается переменная
xдля хранения введенного числа. - Пользователю предлагается ввести число, и цикл while будет выполняться до тех пор, пока не будет введено корректное число.
- Создается переменная
noRepeatDigitдля хранения флага, указывающего, содержит ли число повторяющиеся цифры. - Создается переменная
nDigitдля хранения количества цифр в числе. - Цикл for выполняется, пока число не станет равным 0. На каждой итерации из числа извлекается последняя цифра с помощью операции модуля (%).
- В зависимости от последней цифры, увеличивается соответствующая переменная
n0,n1,n2,n3,n4,n5,n6,n7,n8,n9. - Если флаг
noRepeatDigitустановлен в false, это означает, что число содержит повторяющиеся цифры, и выводится сообщениеRepeated numbers - yes. - Если флаг
noRepeatDigitустановлен в true, это означает, что число не содержит повторяющихся цифр, и выводится сообщениеRepeated numbers - no. - Выводится количество цифр в числе с помощью переменной
nDigit. - Возвращается 0, чтобы указать, что программа успешно завершилась.