Программа "Простейший калькулятор"

Написать программу, выполняющую над двумя числами арифметическую операцию. Числа и знак вводит пользователь. Программа должна завершаться, когда пользователь вводит символ '0' в качестве знака операции. Предусмотреть сообщения о невозможности деления на ноль и неверном введенном знаке операции.

В языке программирования C существует проблема с вводом данных через функцию scanf(). Когда нажимается Enter, то символ перехода на новую строку сохраняется и присваивается переменной при следующем вызове scanf(). Поэтому от лишнего символа избавляются, не присваивая его никакой переменной (для этого в формате пишется знак *).

#include <stdio.h>
 
main() {
   float x,y;
   char sign='+';
   while (sign != '0') {
      printf("Знак: ");
      scanf("%c%*c", &sign);
      if (sign == '0') { break; }
      if (sign == '+' || sign == '-' || sign == '*' || sign == '/') {
         printf("x=");
         scanf("%f%*c", &x);
         printf("y=");
         scanf("%f%*c", &y);
         switch (sign) {
            case '+':
               printf("%.2f\n", x+y);
               break;
            case '-':
               printf("%.2f\n", x-y);
               break;
            case '*':
               printf("%.2f\n", x*y);
               break;
            case '/':
               if (y != 0) printf("%.2f\n", x/y);
               else printf("Деление на ноль!\n");
         }
      }
      else printf("Неверно указан знак операции\n");
   }
}

Пример выполнения программы:

Знак: 7
Неверно указан знак операции
Знак: 3
Неверно указан знак операции
Знак: +
x=4
y=5
9.00
Знак: /
x=0
y=0
Деление на ноль!
Знак: -
x=-34.4
y=-2
-32.40
Знак: 0

Создано

Обновлено

Комментарии

#include int main () { printf("Номера действий : [Сложение-1 | Вычитание-2 | Деление-3 | Умножение-4]\n\n"); float main_math (float x, float y, char sign) { float result; switch (sign) { case '1': result = x + y; break; case '2': result = x - y; break; case '3': result = x / y; break; case '4': result = x * y; break; } return result; } float x; float y; char sign; for ( ; ; ) { printf("Введите ваше первое число > "); scanf("%f%*c", &x); printf("Введите ваше второе число > "); scanf("%f%*c", &y); printf("Введите номер действия > "); scanf("%c%*c", &sign); printf("%.2f\n\n", main_math(x, y, sign)); } return 0; }