Калькулятор - простые вычисления до тех пор, пока пользователь не нажмет "=" - C (СИ)

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

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

Задание: вводим число, действие и число. И так до тех пор, пока не введём знак "=", когда он, то сразу же выводится значение, что получилось. Например, 2+3*4+6=... - сначала подсчитывается сумма 2+3, затем (не учитывая приоритетов действий) умножаем эту сумму на 4 и т.д. То, что написала, не изменяет переменную a почему-то
#include <stdio.h>
#include <conio.h>
#include <locale.h>
 
int main()
{
    double a,b=0;
    char ch;
    setlocale(LC_ALL,"russian"); 
    printf("Введите число \n");
    scanf_s("%lf",&a);
    printf("Введите действие \n");
    fflush(stdin);
    scanf_s("%c",&ch);
    while (ch!=61) 
    { 
        printf("Введите число \n");
        scanf_s("%lf",&b);
        printf("Введите действие \n");
        fflush(stdin);
        scanf_s("%c",&ch);
    }
    switch (ch)
    {
    case '+': a=a+b;
        break;
    case '-': a=a-b;
        break;
    case '*': a=a*b;
        break;
    case '/': a=a/b;
    }
    if (ch==61) printf("=%2.lf\n",a);
    _getch ();
    return 0;
}
Помогиииите, пожалуйста!

Решение задачи: «Калькулятор - простые вычисления до тех пор, пока пользователь не нажмет "="»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
 
int main()
{
    double a,b=0;
    char ch;
    setlocale(LC_ALL,"russian");
    printf("Введите число \n");
    scanf("%lf",&a);
    printf("Введите действие \n");
    fflush(stdin);
    scanf("%c",&ch);
    printf("Введите число \n");
        scanf("%lf",&b);
    while (1)
    {
        switch (ch)
            {
            case '+': a=a+b;
                break;
            case '-': a=a-b;
                break;
            case '*': a=a*b;
                break;
            case '/': a=a/b;
            }
 
        printf("Введите действие \n");
        fflush(stdin);
        scanf("%c",&ch);
            if (ch==61)
            {
                printf("=%2.lf\n",a);
                return 0;
            }
        printf("Введите число \n");
        scanf("%lf",&b);
 
   }
 
    _getch ();
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы
  2. Объявляются переменные a, b и ch типа double и char соответственно
  3. Устанавливается русскоязычная локаль с помощью функции setlocale
  4. Выводится приглашение для ввода первого числа
  5. Считывается первое число с помощью функции scanf в переменную a
  6. Выводится приглашение для ввода действия
  7. Очищается буфер ввода с помощью функции fflush
  8. Считывается действие с помощью функции scanf в переменную ch
  9. Выводится приглашение для ввода второго числа
  10. Считывается второе число с помощью функции scanf в переменную b
  11. Запускается бесконечный цикл while(1)
  12. В блоке switch происходит выполнение арифметического действия в зависимости от введенного действия (сложение, вычитание, умножение, деление)
  13. Выводится приглашение для ввода следующего действия
  14. Очищается буфер ввода с помощью функции fflush
  15. Считывается следующее действие с помощью функции scanf в переменную ch
  16. Если введено действие =, то выводится результат вычисления на экране и программа завершается
  17. Если введено другое действие, то программа продолжает выполнение с пункта 13
  18. Выводится приглашение для ввода следующего числа
  19. Считывается следующее число с помощью функции scanf в переменную b
  20. Программа завершается вызовом функции _getch

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


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

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

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