Выход из калькулятора при неверном вводе данных - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д