Решил написать калькулятор, но не получается
В общем-то, решил написать код для калькулятора, но столкнулся с следующей проблемой: после запуска программы,появляется ввод переменных и после ввода двух переменных программа завершается.
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
double x, y;
char op;
cin >> x;
op = getchar();
cin >> y;
char plus = '+';
char minus = '-';
char div = '/';
char multiplication = '*';
if (op == plus) {
cout << x + y;
}
if (op == minus) {
cout << x - y;
}
if (op == div) {
cout << x * y;
}
if (op == multiplication) {
cout << x / y;
}
return 0;
}
Ответы (2 шт):
Автор решения: Nayt
→ Ссылка
Вместо:
op = getchar();
напишите:
cin >> op;
+У вас перепутаны местами умножение и деление
А вообще вот альтернатива вашего кода:
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
double x, y;
char op;
double answer;
cin >> x >> op >> y;
if (op == '+') {
answer = x + y;
}
else if (op == '-') {
answer = x - y;
}
else if (op == '*') {
answer = x * y;
}
else if (op == '/') {
answer = x / y;
}
cout << answer;
return 0;
}
Автор решения: Тарас Атавин
→ Ссылка
Она завершается не после ввода, а после вывода результата.
#include <iostream>
int main()
{
double x, y;
char op;
char q;
do
{
std::cin >> x;
op = getchar();
std::cin >> y;
switch (op)
{
case '+': std::cout<<(x+y)<<std::endl;
break;
case '-': std::cout<<(x-y)<<std::endl;
break;
case '*': std::cout<<(x*y)<<std::endl;
break;
case '/': std::cout<<(x/y)<<std::endl;
break;
default : std::cout<<"error"<<std::endl;
break;
}
std::cout<<"next (y/n)?"<<std::endl;
do
{
q = getchar();
} while ((q!='y')&&(q!='Y')&&(q!='n')&&(q!='N'));
} while ((q=='y')||(q=='Y'));
return 0;
}