无法正确计算程序

时间:2011-06-30 11:44:55

标签: c++

我正在尝试创建一个执行非常基本计算的程序,但由于某种原因,我无法正确获取代码。它应该计算一次旅行的每加仑英里数。然后,您可以多次添加此信息(针对不同的行程),并且每次应计算每加仑的总里程数(即所有行程的每加仑平均英里数)。这是代码:

#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时,一切正常。然后,如果我第三次再次进行计算,则计算开始变得不正确。

2 个答案:

答案 0 :(得分:3)

您无法按照您的方式计算平均值。在您的代码中,您将除以计数器EACH迭代,而您应该仅在结束时除以它。 做你需要的最好方法就是这样:

...
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;
    ...

答案 1 :(得分:0)

我猜测x和y的值没有正确更新。在每次迭代后尝试使x和y为零。 希望它以这种方式运作

TNQ