Калькулятор. Как заставить его реагировать на ошибочные выражения - C (СИ)
Формулировка задачи:
С наступающим!
помогите с вопросом.есть простой калькулятор следующего типа:
Вопросец - как заставить его выписать ошибку при вводе выражений типа : "3/0";"1" ?
Заранее спасибушки.
#include<math.h> #include <stdio.h> #include <conio.h> int main() { float a,b; char ch; printf ("eta programma - prosteishiy kal'kulyator\n"); printf ("vvelite pervoe chislo, zatem znak: '+', '-', '*', '/' ili '%'\n"); printf ("zatem vvedite vtoroe chislo\n"); printf ("vvod dannix:\n"); scanf ("%f%c%f",&a,&ch,&b); switch (ch) { case '+': printf("=%g",a+b); break; case '-': printf("=%g",a-b); break; case '*': printf("=%g",a*b); break; case '/': if (b) printf("=%g",a/b); break; case '%': printf("=%g",fmod(a,b)); break; default: printf("Input error!!!"); } getch(); }
Решение задачи: «Калькулятор. Как заставить его реагировать на ошибочные выражения»
textual
Листинг программы
#include <math.h> #include <stdio.h> #include <conio.h> int main() { float a,b; char ch; printf ("eta programma - prosteishiy kal'kulyator\n"); printf ("vvelite pervoe chislo, zatem znak: '+', '-', '*', '/' ili '%'\n"); printf ("zatem vvedite vtoroe chislo\n"); printf ("vvod dannix:\n"); if (scanf("%f", &a)!=1) return 0; if (scanf("%c", &ch)!=1) return 0; if (ch=='\n') return 0; if (scanf("%f", &b)!=1) return 0; switch (ch) { case '+': printf("=%g",a+b); break; case '-': printf("=%g",a-b); break; case '*': printf("=%g",a*b); break; case '/': if (b) printf("=%g",a/b); else printf("I don't advise to divide by zero\n"); break; case '%': printf("=%g",fmod(a,b)); break; default: printf("Input error!!!"); } getch(); }
Объяснение кода листинга программы
- В начале программы подключаются необходимые библиотеки: math.h, printf.h и conio.h.
- Затем определена переменная типа float
a
, которая будет использоваться для хранения первого введенного числа. - Также определена переменная типа char
ch
, которая будет использоваться для хранения оператора, введенного пользователем. - Далее выводится приветствие и инструкция для пользователя о том, как использовать калькулятор.
- После этого программа переходит к циклу, который начинается с запроса у пользователя ввода первого числа.
- Если пользователь ввел число некорректно (скажем, ввел символ вместо числа), то программа завершается.
- Если пользователь ввел число корректно, то программа переходит к запросу ввода оператора.
- Если пользователь ввел некорректный оператор (например, букву вместо цифры), то программа завершается.
- Если пользователь ввел корректный оператор, то программа переходит к запросу ввода второго числа.
- Если пользователь ввел число некорректно, то программа завершается.
- Если пользователь ввел корректные числа и корректный оператор, то программа вычисляет результат и выводит его на экран.
- Если пользователь ввел некорректный оператор (например, попытался разделить на ноль), то программа выводит соответствующее сообщение об ошибке.
- Если пользователь ввел некорректные числа, то программа также выводит соответствующее сообщение об ошибке.
- Если пользователь ввел корректные числа и корректный оператор, но результат вычисления не может быть представлен в виде числа с плавающей точкой (например, при делении на ноль), то программа выводит соответствующее сообщение об ошибке.
- Если программа завершилась не из-за ошибки пользователя, то она завершается стандартным образом.
- В случае ошибки программа завершается с кодом возврата 0.
- Код возврата 0 используется для обработки ошибок ввода.
- Код возврата 1 используется для обработки ошибок ввода в функции scanf.
- Код возврата 2 используется для обработки ошибок ввода в функции scanf.
- Код возврата 3 используется для обработки ошибок ввода в функции scanf.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д