Выход из калькулятора при неверном вводе данных - C (СИ)

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

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

Товарищи, подскажите пожалуйста. В задаче требуется выйти из приведённого ниже калькулятора путём ввода не числа в ответ на приглашение ввода:
Листинг программы
  1. #include <stdio.h>
  2. void main() {
  3. int a, b;
  4. char op;
  5. while(1) {
  6. scanf("%d%c%d", &a, &op, &b);
  7. if(b == 0 && op == '/'){
  8. printf("=INF\n");
  9. continue;
  10. }
  11. switch(op) {
  12. case '+': printf("=%d\n", a+b); break;
  13. case '-': printf("=%d\n", a-b); break;
  14. case '*': printf("=%d\n", a*b); break;
  15. case '/': printf("=%d\n", a/b); break;
  16. case '%': printf("=%d\n", a%b); break;
  17. default: printf("\nWrong operation!!!\n"); break;
  18. }
  19. }
  20. }
Нужно какое-то условие для переменной a, но я никак не могу придумать такое

Решение задачи: «Выход из калькулятора при неверном вводе данных»

textual
Листинг программы
  1. //--------------------------------------------------------------------------
  2. // Функция:   ReadValue
  3. // Описание:  получение и проверка данных с консоли
  4. //--------------------------------------------------------------------------
  5. double ReadValue()
  6. {
  7.   double temp=NO;
  8.   int val;
  9.   do
  10.   {
  11.     val=getch();
  12.     if (val>=48&&val<=57)       // от 0 до 9
  13.     {
  14.       if(temp==NO) temp=0;
  15.       temp=temp*10+(val-'0');
  16.       printf("%c",val);
  17.     }
  18.     else
  19.       break;
  20.   }while(val!=ESC&&val!=ENTER);     // пока не нажата или ENTER или ESC
  21.   if (val==ESC)
  22.     return END_POINT;
  23.   if (val!=ESC&&val!=ENTER)
  24.     return NO;
  25.  
  26. } // end ReadValue

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

  1. Функция ReadValue предназначена для получения и проверки данных, вводимых пользователем.
  2. В начале функции объявлены две переменные: temp типа double и val типа int. Значение переменной temp установлено в NO, а переменная val инициализируется значением, полученным с помощью функции getch().
  3. Далее следует цикл do-while, который выполняется до тех пор, пока пользователь не введет ENTER или ESC.
  4. Внутри цикла происходит проверка введенного значения. Если оно является числом от 0 до 9, то значение переменной temp умножается на 10 и к нему добавляется значение val, извлеченное из строки, используя таблицу символов ASCII.
  5. Если введено нечисловое значение, то цикл прерывается.
  6. Если пользователь нажимает ESC, функция возвращает END_POINT.
  7. Если пользователь вводит что-то, что не является ESC или ENTER, функция возвращает NO.

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


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

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

12   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы