Исправление ошибок для неправильного вывода

Моя программа запрашивает две переменные: одно целое и одно с плавающей точкой. Оба должны быть больше 0 и меньше 2000. Но при тестировании входа 45 и 0 он принимает значение и показывает результат 0,00, хотя условия требуют (cash > 0) && (balance > 0),

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int cash;
float balance ;
cin >> cash >> balance;
if((cash%5==0) && (cash <= balance) && (cash > 0) && (balance > 0) && (cash <= 2000) && (balance <= 2000))
{
balance = (balance - cash) - 0.50;
cout << fixed;
cout.precision(2);
cout << balance;
}
else if (cash%5 != 0)
{
cout << fixed;
cout.precision(2);
cout << balance;
}
else if (cash > balance)
{
cout << fixed;
cout.precision(2);
cout << balance;
}
return 0;
}

0

Решение

Условие ложно в выражении (cash <= balance) , поэтому он не будет проверять другие условия и перейти к else часть и cash > balance удовлетворен, поэтому он будет выполнять выражение внутри cash > balance часть.
Например

 int a=1,b=2,c=3;
if((cout<<"first ") && ( a==2 ) && (cout<<" second\n"))
{
cout<<"condition true\n";
}
else
{
cout<<"condition false\n";
}

Вот first будет печатать и когда a==2 происходит выражение, которое ложно, поэтому он будет двигаться к else часть.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector