最近,当我遇到ATM挑战时,我开始接受Code Chef挑战,以便在C和C ++中练习编程。挑战(我预计相对容易)是创建一个程序,如果提款金额是5的倍数和withdraw > balance
,则从银行账户中提取资金。如果交易被接受,它还收取0.5的费用,否则它只是重新打印银行数据。
挑战的链接在这里: https://www.codechef.com/problems/HS08TEST
该程序在我的计算机上运行得非常好,但由于某种原因它是错误的。
这是我的计划:
#include <iostream>
#include <cstdio>
#include <iomanip>
using std::cout; using std::cin; using std::endl;
class Bank_data {
private:
double balance;
public:
void withdraw (int amount) {
if (amount > balance - 0.5 || amount % 5 != 0)
printf("%.2f\n", balance);
else
printf("%.2f\n", balance - amount - 0.5);
}
void setBalance (int amount) {
balance = amount;
}
};
int main () {
Bank_data bd;
int withdraw, init_val;
cin >> std::fixed;
cin >> std::setprecision(2) >> withdraw >> init_val;
bd.setBalance (init_val);
bd.withdraw (withdraw);
return 0;
}
示例io:
I:5 500
O1:494.50
I2:600 500
O2:500.00
I3:4 500
O3:500.00