Выход из калькулятора при неверном вводе данных - C (СИ)
Формулировка задачи:
Товарищи, подскажите пожалуйста. В задаче требуется выйти из приведённого ниже калькулятора путём ввода не числа в ответ на приглашение ввода:
Нужно какое-то условие для переменной a, но я никак не могу придумать такое
#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; } } }
Решение задачи: «Выход из калькулятора при неверном вводе данных»
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
Объяснение кода листинга программы
- Функция ReadValue предназначена для получения и проверки данных, вводимых пользователем.
- В начале функции объявлены две переменные: temp типа double и val типа int. Значение переменной temp установлено в NO, а переменная val инициализируется значением, полученным с помощью функции getch().
- Далее следует цикл do-while, который выполняется до тех пор, пока пользователь не введет ENTER или ESC.
- Внутри цикла происходит проверка введенного значения. Если оно является числом от 0 до 9, то значение переменной temp умножается на 10 и к нему добавляется значение val, извлеченное из строки, используя таблицу символов ASCII.
- Если введено нечисловое значение, то цикл прерывается.
- Если пользователь нажимает ESC, функция возвращает END_POINT.
- Если пользователь вводит что-то, что не является ESC или ENTER, функция возвращает NO.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д