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