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

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

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

Товарищи, подскажите пожалуйста. В задаче требуется выйти из приведённого ниже калькулятора путём ввода не числа в ответ на приглашение ввода:
#include <stdio.h>
 
void main() {
    int a, b;
    char op;
    while(1) {
        scanf("%d%c%d", &a, &op, &b);
        if(b == 0 && op == '/'){
            printf("=INF\n");
            continue;
        }
        switch(op) {
            case '+': printf("=%d\n", a+b); break;
            case '-': printf("=%d\n", a-b); break;
            case '*': printf("=%d\n", a*b); break;
            case '/': printf("=%d\n", a/b); break;
            case '%': printf("=%d\n", a%b); break;
            default: printf("\nWrong operation!!!\n"); break;
        }
    }
}
Нужно какое-то условие для переменной a, но я никак не могу придумать такое

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

textual
Листинг программы
//-------------------------------------------------------------------------- 
// Функция:   ReadValue
// Описание:  получение и проверка данных с консоли
//-------------------------------------------------------------------------- 
double ReadValue()
{
  double temp=NO;
  int val;
  do
  {
    val=getch();
    if (val>=48&&val<=57)       // от 0 до 9
    { 
      if(temp==NO) temp=0;
      temp=temp*10+(val-'0');
      printf("%c",val);
    }
    else
      break;
  }while(val!=ESC&&val!=ENTER);     // пока не нажата или ENTER или ESC
  if (val==ESC)
    return END_POINT;
  if (val!=ESC&&val!=ENTER)
    return NO;
 
} // 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
Похожие ответы