2013-10-23 39 views
-5

我一直在考慮下面的分配和我不能確定如何實現它:如何執行數學運算?

計算費用乘坐出租車。公式如下:

第一公里成本50.每增加200m成本5.如果距離 超過30公里,則每增加一公里增加10的費用。 程序必須輸入總距離(以公里計)並計算費用。

我寫了下面的代碼,但不知道如何處理 「200米成本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++

+1

C ** ** XOR C++?所有的空白在哪裏? – 2013-10-23 20:51:36

+0

瞭解如何使用%運算符。我們不是爲了解決您的問題,而是爲了幫助您。但((km%200)* 5)應該是一個提示 – Lefsler

+1

缺少空白使得你的代碼很難閱讀。 – jmoerdyk

回答

0

首先,這個問題包含一些含糊之處 - 我們知道第一公里的成本爲50,而第一公里以上的任何200米增加了額外的5個。但是,如果距離大於30公里,那麼5公里以上的公里費用是10公里,或者它取代了5?另外,如果部分數量例如是如果總距離是1100米,是5次充電?我會假設部分金額不算。

其次,你的代碼中有一些邏輯錯誤。此區塊:

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

忽略額外5s,您應該在第一個1km以上收取費用。

下一個塊:

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;