Калькулятор - простые вычисления до тех пор, пока пользователь не нажмет "=" - 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Объявляются переменные a, b и ch типа double и char соответственно
- Устанавливается русскоязычная локаль с помощью функции setlocale
- Выводится приглашение для ввода первого числа
- Считывается первое число с помощью функции scanf в переменную a
- Выводится приглашение для ввода действия
- Очищается буфер ввода с помощью функции fflush
- Считывается действие с помощью функции scanf в переменную ch
- Выводится приглашение для ввода второго числа
- Считывается второе число с помощью функции scanf в переменную b
- Запускается бесконечный цикл while(1)
- В блоке switch происходит выполнение арифметического действия в зависимости от введенного действия (сложение, вычитание, умножение, деление)
- Выводится приглашение для ввода следующего действия
- Очищается буфер ввода с помощью функции fflush
- Считывается следующее действие с помощью функции scanf в переменную ch
- Если введено действие
=, то выводится результат вычисления на экране и программа завершается - Если введено другое действие, то программа продолжает выполнение с пункта 13
- Выводится приглашение для ввода следующего числа
- Считывается следующее число с помощью функции scanf в переменную b
- Программа завершается вызовом функции _getch