Определить, какие цифры числа встречаются несколько раз (с защитой от неверного ввода) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести натуральное число и определить, какие цифры встречаются несколько раз. Пример: Введите число >= 0: Введите число >= 0: 2323 1234 Повторяются: 2, 3 Нет повторов.

Решение задачи: «Определить, какие цифры числа встречаются несколько раз (с защитой от неверного ввода)»

textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int main () {
char str[81];
int ch,k=0,i,c[10];
printf ("\nPrint digits, ENTER is OK, ESC is exit\n");
do {
  fflush(stdin); 
  ch=getch();
  if (ch>='0' && ch<='9') {
    printf ("%c",ch);
    str[k++]=ch;
  }
  else if (ch==13) {
   if (k>0) {
    for (i=0; i<10; i++) c[i]=0;
    for (i=0; i<k; i++) c[str[i]-'0']++;
    printf ("\nRepeating: ");
    for (i=0; i<10; i++) if (c[i]>1) printf ("%d ",i);
    printf ("\nNo repeating: ");
    for (i=0; i<10; i++) if (c[i]==1) printf ("%d ",i);
    k=0;
   }
   else printf ("\nNo digits!");
   printf ("\nTry it again, baby\n");
  }
} while (ch!=27);
return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы: для работы с выводом на экран, для работы с клавиатурой и для работы с массивами.
  2. Объявляем переменные:
    • char str[81] - строка, в которую будут добавляться введенные цифры.
    • int ch,k=0,i,c[10] - переменные для подсчета повторяющихся цифр.
  3. Выводим сообщение с просьбой ввести цифры и нажимать ENTER, а при нажатии ESC завершать программу.
  4. Запускаем бесконечный цикл do-while, который будет выполняться до тех пор, пока не будет нажата клавиша ESC (27).
  5. В каждой итерации цикла с помощью функции fflush(stdin) очищаем буфер ввода от предыдущих значений и считываем очередную цифру с помощью функции getch().
  6. Если считанная цифра больше или равна '0' и меньше '9', то она добавляется в строку str[k++].
  7. Если считанная цифра равна 13 (нажатие ENTER), то проверяем, были ли введены цифры. Если да, то подсчитываем количество повторений каждой цифры и выводим список повторяющихся цифр.
  8. Если считанная цифра не является цифрой от '0' до '9', то выводим сообщение об ошибке и просим ввести цифры заново.
  9. После завершения цикла do-while возвращаем 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы