2

次のコードを見てください

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    double balance=0;
    int withdraw = 0;
    double const bankCharges = 0.5;


    cin >> withdraw >> balance;

    if(withdraw%5==0 && balance>(withdraw+bankCharges))
    {
        cout << fixed << setprecision(2) << ((balance)-(withdraw+bankCharges)) << endl;
    }
    else if(withdraw%5!=0 || withdraw>balance)
    {
        cout << fixed <<setprecision(2) << balance << endl;
    }


    return 0;


}

上記のコードは、以下の課題に対処するために作成されています

http://www.codechef.com/problems/HS08TEST

ご覧のとおり、私のコードは正しい答えを提供しています。しかし、テストエンジンは「間違った答え」と言います!!!!! なんで?助けてください!

4

1 に答える 1

4

if,else ifブロックelseに到達する可能性がわずかでもある場合は、無条件で放置しないでください。elseコードに条件を追加します。

if(withdraw%5==0 && balance>(withdraw+bankCharges))
{
    cout << fixed << setprecision(2) << ((balance)-(withdraw+bankCharges)) << endl;
}
else if(withdraw%5!=0 || withdraw>balance)
{
    cout << fixed <<setprecision(2) << balance << endl;
}
else
{
   //Do something
}
于 2013-02-13T05:52:43.067 に答える