无法使程序正确计算

Unable to make program calculate correctly

本文关键字:计算 程序      更新时间:2023-10-16

我正试图制作一个能进行非常基本计算的程序,但由于某种原因,我无法正确地编写代码。它应该计算一次旅行每加仑的英里数。然后,您可以多次添加此信息(针对不同的行程(,每次都应该计算每加仑的总里程(即所有行程的平均每加仑里程(。这是代码:

#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加仑时,一切都很好。然后,如果我再做第三次,计算就会开始变得不正确。

你不能用这种方法计算平均值的平均值。在你的代码中,你要用计数器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;
    ...

我猜x和y的值没有正确更新。每次迭代后,都要尝试将x和y设为零。希望这样

TNQ