2016-04-30 29 views
1

問題陳述下降:奔跑在編譯器,在線

普加想從ATM提取X $美國。如果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; 
+0

仍然遇到相同的錯誤。 '錯誤的答案' –

+0

你在做另一個錯誤,在這裏你將0.5添加到你的平衡變量中,如果條件是「y」,而不是你必須從「y」中減去它,然後檢查它是否仍然有足夠的資金完成任務。現在這必須是正確的答案。 –