-5

私は次の任務を与えられましたが、それを実装する方法がわかりません:

タクシーの乗車料金を計算します。式は次のとおりです。

最初の 1 km は 50 です。200 m を超えるごとに 5 がかかります。距離が 30 km を超える場合は、1 km ごとに料金が 10 追加されます。プログラムは合計距離 (km) を入力し、料金を計算する必要があります。

以下のコードを書いたのですが、「200mコスト5」の部分がどうすればいいのかわかりません...

#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
    double totalfee, km, m;
    cout << "distance" << endl;
    cin >> km;
    m = km * 1000;
    if (km < 30)
    {
        totalfee = 50;
        cout << "totalfee = " << totalfee << endl;
    }
    else if (km > 30)
    {
        totalfee = 60;
        cout << "totalfee = " << totalfee << endl;
    }
    system("pause");
}

それはC ++にあります

4

1 に答える 1

0

まず、質問にはいくつかのあいまいな点があります。最初の 1 km の料金は 50 で、最初の 1 km を超える 200 m ごとに 5 が追加されることがわかっています。 5、または5の代わりになりますか? さらに、合計距離が 1100m の場合、5 が課金されるなど、部分的な金額もカウントする必要がありますか? 部分的な金額はカウントされないと仮定します。

次に、コードにいくつかの論理エラーがあります。このブロック:

if (km < 30)
    {
        totalfee = 50;
        cout << "totalfee = " << totalfee << endl;
    }

最初の 1 km を超えて充電する必要がある追加の 5 秒は無視されます。

次のブロック:

else if (km > 30)
    {
        totalfee = 60;
        cout << "totalfee = " << totalfee << endl;
    }

最初のものと同じ論理エラーが含まれていますが、1 km ごとに充電する余分な 10 を無視し、これを 1 回だけ充電します (合計 km が 30.5 の場合など、まったく充電すべきではない場合に充電します)。

次のようなことを試すことができます:

//Assuming the two fees are both added separately from one another:

totalfee = 50; // Charge at least this much no matter what

// Pseudo-code:
if (km > 1)
{
   // Subtract 1 from km
   // Divide result by 0.2, discard any remainder
   // Multiply result by 5, and add the total to totalfee
}
if (km > 30)
{
   // Subtract 30 from km
   // Divide result by 1, discard any remainder
   // Multiply result by 10, and add the total to totalfee
}

cout << "totalfee = " << totalfee << endl;
于 2013-10-23T21:16:54.577 に答える