Другие языки программирования и технологии
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.
После каждого блока 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, выдать исключение вместо проведения деления.
Кроме того, при проверке условия надо двойной знак равно == , что означает сравнить, а один = означает присвоить.
#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, выдать исключение вместо проведения деления.
Кроме того, при проверке условия надо двойной знак равно == , что означает сравнить, а один = означает присвоить.
Евгений /
спасибо
Владимир Лутохин
Неплохо бы проверять и сами аргументы x и y - удостоверяться, что это вообще числа, а не символы. Но раз вы только начали изучать язык, то пока необязательно. Ещё вернёться к этому вопросу.
Pascal???
Евгений /
ты че тормоз? или баллы накручиваешь? я и внутри и снаружи вопроса написал c++
эммм.. . if(o == '+') и т. д (какбэ при сравнении два знака равенства)
и кста, проще это всё зделать с помощью кейсов) и легче и понятнее.
и кста, проще это всё зделать с помощью кейсов) и легче и понятнее.
Евгений /
знаю, но как в кейсы добавить случай когда пользователь вводит другой знак? чтобы вывести Неправильный символ!
Самех Михайл
Используй ветку default )
Устройте проверки на корректность икса и игрека, а также замените всю конструкцию иф-елс на switch. возможно компилятор косячит, напр. , не умеет работать с такой вложенностью условий.
Да, тока заметил. Сранение идет с помощью операции ==, у вас неверно! со свичом подобного не возникло
Да, тока заметил. Сранение идет с помощью операции ==, у вас неверно! со свичом подобного не возникло
Похожие вопросы
- Программка c# нужна помощь
- (C++) Нужна помощь в создании метода "пузырька".
- C++ Нужна Помощь
- Язык Arduino(C, C++) Нужна помощь: в изучении arduino встретил знак "&" помогите, пожалуйста, что он означает!
- c++ нужна помощь )
- C#. Нужна помощь.
- (C++) Нужна помощь в написании 4-х программ. максимально простые, уровень с++ нулевой практически.
- C# нужна помощь, как это все объединить ?
- Нужна помощь в C++
- Программисты нужна помощь в c++!