-5

我被分配了以下任务,但不确定如何实现它:

计算乘坐出租车的费用。公式如下:

第一公里收费50,每多走200m,收费5。如果距离超过30km,每多走一公里,费用加10。程序必须输入总距离(以公里为单位)并计算费用。

我编写了以下代码,但不知道如何处理“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

首先,这个问题有一些含糊之处——我们知道第一公里收费50,第一公里以上任何200m都会增加5。但是,如果距离大于30km,那么每公里10的费用是不是在5,还是取代5?此外,如果总距离为 1100m,是否应计入部分金额,例如是否收取 5?我假设部分金额不计算在内。

其次,您的代码中有一些逻辑错误。这个块:

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

忽略您应该在前 1 公里以上充电的额外 5 秒。

下一个区块:

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

包含与第一个相同的逻辑错误,但也忽略了每公里额外的 10 充电,只充电一次(并在根本不应该充电时充电,例如,如果总公里为 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 回答