Проверка корректности ввода в калькуляторе - C (СИ)
Формулировка задачи:
Задание простое. Сделать калькулятор (+,-,*,\). Надо, чтобы в одной строке вводилась операция, при этом, если есть лишние символы, выводить ошибку. Так же надо, чтобы программа не учитывала при вводе пробелы. Т.е. 5+5 , 5 + 5 и 5 (много пробелов) + 5 - это одинаковые операции. При вводе, например, 5f + 5c так же должна выводиться ошибка, ровно как и при вводе 5 df+tr 5. Сам калькулятор сделать не составило труда, а вот проверка на ввод у меня не получается. Препод сказал, что надо где то использовать getchar()... Прошу помощи, заранее спасибо.
Решение задачи: «Проверка корректности ввода в калькуляторе»
textual
Листинг программы
#include <stdio.h>
#define size 80
int main()
{ char buf[size], sign;
int a,b;
fgets(buf, size, stdin);
sscanf(buf, "%d%*[ ,a-z,A-Z]%c%*[ ,a-z,A-Z]%d", &a, &sign, &b);
printf("%d %c %d = %d", a, sign, b, a+b);
getchar();
return 0;
}
Объяснение кода листинга программы
- Программа считывает строку из стандартного ввода с помощью функции
fgets(), сохраняя ее в буфереbuf. - С помощью функции
sscanf()из считанной строки извлекаются значения трех переменных:a,signиb. - Переменная
aсодержит целочисленное значение, которое считывается без учета пробелов и знака. - Переменная
signсодержит знак, который считывается как символ. - Переменная
bсодержит целочисленное значение, которое считывается после знака как число. - Выводится сообщение, содержащее значения переменных
a,signиb, а также их сумму. - Программа ожидает ввода символа, чтобы подтвердить корректность выполнения программы.
- В конце программы возвращается 0, что означает успешное выполнение.