Калькулятор. Как заставить его реагировать на ошибочные выражения - C (СИ)

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

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

С наступающим! помогите с вопросом.есть простой калькулятор следующего типа:
#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();
}
Вопросец - как заставить его выписать ошибку при вводе выражений типа : "3/0";"1" ? Заранее спасибушки.

Решение задачи: «Калькулятор. Как заставить его реагировать на ошибочные выражения»

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();
}

Объяснение кода листинга программы

  1. В начале программы подключаются необходимые библиотеки: math.h, printf.h и conio.h.
  2. Затем определена переменная типа float a, которая будет использоваться для хранения первого введенного числа.
  3. Также определена переменная типа char ch, которая будет использоваться для хранения оператора, введенного пользователем.
  4. Далее выводится приветствие и инструкция для пользователя о том, как использовать калькулятор.
  5. После этого программа переходит к циклу, который начинается с запроса у пользователя ввода первого числа.
  6. Если пользователь ввел число некорректно (скажем, ввел символ вместо числа), то программа завершается.
  7. Если пользователь ввел число корректно, то программа переходит к запросу ввода оператора.
  8. Если пользователь ввел некорректный оператор (например, букву вместо цифры), то программа завершается.
  9. Если пользователь ввел корректный оператор, то программа переходит к запросу ввода второго числа.
  10. Если пользователь ввел число некорректно, то программа завершается.
  11. Если пользователь ввел корректные числа и корректный оператор, то программа вычисляет результат и выводит его на экран.
  12. Если пользователь ввел некорректный оператор (например, попытался разделить на ноль), то программа выводит соответствующее сообщение об ошибке.
  13. Если пользователь ввел некорректные числа, то программа также выводит соответствующее сообщение об ошибке.
  14. Если пользователь ввел корректные числа и корректный оператор, но результат вычисления не может быть представлен в виде числа с плавающей точкой (например, при делении на ноль), то программа выводит соответствующее сообщение об ошибке.
  15. Если программа завершилась не из-за ошибки пользователя, то она завершается стандартным образом.
  16. В случае ошибки программа завершается с кодом возврата 0.
  17. Код возврата 0 используется для обработки ошибок ввода.
  18. Код возврата 1 используется для обработки ошибок ввода в функции scanf.
  19. Код возврата 2 используется для обработки ошибок ввода в функции scanf.
  20. Код возврата 3 используется для обработки ошибок ввода в функции scanf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы