2011-06-30 80 views
1

我想做一個程序,做一個非常基本的計算,但由於某種原因,我不能得到正確的代碼。它應該計算一次行程的每加侖英里數。然後,您可以多次添加此信息(針對不同的旅程),並且每次計算每加侖的總里程數(即所有行程的每加侖平均英里數)。這是代碼:無法正確計算程序

#include <iostream> 
#include <iomanip> 
using namespace std; 


int main() 
{ 
int counter = 1; 
double milePerRe, milePerTo = 0, x, y; 
cout << "Enter the miles used (-1 to quit): "; 
cin >> x; 
cout << "Enter gallons: "; 
cin >> y; 
while (x != -1) 
{ 
     milePerRe = x/y; 
     milePerTo += milePerRe; 
     milePerTo /= counter; 
     cout << "MPG this tankful: " << setprecision(6) << fixed << milePerRe; 
     cout << "\nTotal MPG: " << setprecision(6) << fixed << milePerTo << endl << endl; 
     counter++; 
     cout << "Enter the miles used (-1 to quit): "; 
     cin >> x; 
     if (x != -1) 
     { 
     cout << "Enter gallons: "; 
     cin >> y; 
     } 
} 
system("pause"); 
return 0; 
} 

當我運行該程序,並說我在第一次加侖的數量和第二次進入10英里和1,一切工作正常。然後,如果我再次執行此操作,則計算開始變得不正確。

有沒有建議嗎?

+0

哪裏'milePerRe'和'milePerTo'申報? –

+0

不正確?像在最後一位小數? –

+0

爲什麼'milePerTo'和'milePerRe'在每個循環中累積而不是重置? –

回答

3

不能計算平均數的平均值,你做的方式。在你的代碼中,你將被計數器的每次迭代分開,而你只能在最後進行分割。做你需要什麼 最好的辦法是這樣的:

... 
double totalMiles = 0; 
double totalGallons = 0; 
... 
while (x != -1) 
{ 
    milePerRe = x/y; 
    totalMiles += x; 
    totalGallons += y; 
    milesPerTo = totalMiles/totalGallons; 
... 

但是,如果你的任務是明確地計算行程的平均(不是平均英里/加侖),你就需要引入另一個變量,像這樣:

... 
double currentMilesPerTo; 
... 
while (x != -1) 
{ 
    milePerRe = x/y; 
    milePerTo += milePerRe; 
    currentMilesPerTo = milePerTo/counter; 
    .... 
    cout << "\nTotal MPG: " << currentMilesPerTo; 
    ... 
0

我估計x和y的值沒有被正確更新。在每次迭代後嘗試使x和y爲零。 希望是這樣工作的

TNQ