问题陈述:
Pooja希望从ATM取款X $ US。如果X是5的倍数,自动提款机将只接受交易,并且Pooja的账户余额有足够的现金来执行提款交易(包括银行手续费)。每次成功提款,银行收取0.50美元。在尝试交易后计算Pooja的账户余额。
输入 正整数0 < X <= 2000 - Pooja希望撤回的现金数额。非负数0 <= Y <= 2000,精确度为两位数 - Pooja的初始账户余额。
输出 在尝试的事务之后输出帐户余额,以具有两位精度的数字给出。如果账户中没有足够的资金来完成交易,则输出当前的银行余额。
示例 - 成功交易
输入:30 120.00
输出:89.50
示例 - 不正确的提款金额(不是5的倍数)
输入:42 120.00
输出:120.00
示例 - 资金不足
输入:300 120.00
输出:120.00
我的部分解决方案(似乎有问题):
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int x;
float y;
cin>>x;
cin>>y;
if((x%5==0)&&(x<=(y+0.5)))
cout<<fixed<<setprecision(2)<<(y-(x+0.5));
else
cout<<fixed<<setprecision(2)<<y;
}
当我提交我的答案时,它说错误提交但是当我在我的编译器中运行它时,它运行得很好。我哪里错了?
答案 0 :(得分:0)
您尚未检查输入值的条件。 在输入条件中,它表示x必须> 0且<2000且y应该在0和2000之间。 如果它们落在给定范围内,您可以检查这些值。 显然负数在交易中是不可接受的。 如果条件不满足,那么您应该从那里终止您的程序,而不显示任何输出。你可以使用return 0; 在输入后将其添加到您的代码中:
if(x <= 0 || x > 2000 || y <0 || y >2000)
return 0;