我已获得以下任务,并且不确定如何实施它:
计算出租车的费用。公式如下:
第一公里的费用为50.每增加200米的费用为5.如果距离 超过30公里,然后每增加一公里增加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 ++中
答案 0 :(得分:0)
首先,这个问题含有一些含糊之处 - 我们知道第一公里的费用是50,而第一公里以上的任何200公里都会增加5公里。但是,如果距离大于30公里,那么每公里费用是10加5的顶部,还是取代了5?此外,如果部分金额计算,例如如果总距离是1100米,则收费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)。 / p>
您可以尝试这样的事情:
//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;