Другие языки программирования и технологии

c++ нужна помощь

я новичок в c++, хочу написать калькулятор. вот код: #include <iostream> using namespace std; void pause() { system("PAUSE >> void"); } int main() { float x; char o; float y; float r; cin >> x; cin >> o; cin >> y; cout << x << o << y << "="; if (o='-') r = x - y; else { if (o='+') r = x + y; else { if (o='*') r = x * y; else { if (o='/') r = x / y; else cout << "Неправильный символ!" << endl; } } } cout << r << endl; pause(); } в чем ошибка? он решает только примеры с вычитанием, в остальных случаях пишет в результате 0.
Евгений /
Евгений /
1 456
После каждого блока else надо закрывать фигурную скобку, а не в конце программы. У вас цикл неправильно построен.

#include <iostream>
using namespace std;

void pause()
{
system("PAUSE >> void");
}

int main()
{
float x;
char o;
float y;
float r;
cin >> x;
cin >> o;
cin >> y;
cout << x << o << y << "=";
if (o=='-')
r = x - y;
else if
{
if (o=='+')
r = x + y;
}
else if
{
if (o=='*')
r = x * y;
}
else if
{
if (o=='/')
{
if (y != 0)
r = x / y;
else
cout << "Ошибка! Попытка деления на нуль! \n";
}
else
cout << "Неправильный символ! " << endl;
cout << r << endl;
pause();
}

Кроме того, перед выполнением деления, (если o == '/') надо проверять делитель на неравенство нулю. Если y == 0, выдать исключение вместо проведения деления.
Кроме того, при проверке условия надо двойной знак равно == , что означает сравнить, а один = означает присвоить.
Владимир Лутохин
Владимир Лутохин
45 384
Лучший ответ
Евгений / спасибо
Владимир Лутохин Неплохо бы проверять и сами аргументы x и y - удостоверяться, что это вообще числа, а не символы. Но раз вы только начали изучать язык, то пока необязательно. Ещё вернёться к этому вопросу.
Pascal???
Лёха Ктр
Лёха Ктр
2 185
Евгений / ты че тормоз? или баллы накручиваешь? я и внутри и снаружи вопроса написал c++
эммм.. . if(o == '+') и т. д (какбэ при сравнении два знака равенства)

и кста, проще это всё зделать с помощью кейсов) и легче и понятнее.
Самех Михайл
Самех Михайл
1 732
Евгений / знаю, но как в кейсы добавить случай когда пользователь вводит другой знак? чтобы вывести Неправильный символ!
Самех Михайл Используй ветку default )
Устройте проверки на корректность икса и игрека, а также замените всю конструкцию иф-елс на switch. возможно компилятор косячит, напр. , не умеет работать с такой вложенностью условий.

Да, тока заметил. Сранение идет с помощью операции ==, у вас неверно! со свичом подобного не возникло