我正在为家庭作业编写一个程序,根据品牌,租用天数和行驶里程来计算租车费率。总体而言,该程序工作,除了当提示用户计算要计算的汽车数量时,程序在超过该数量之后继续提示用户输入。此外,里程的格式对于输入的第一辆车是正确的,但随后的输入会发生变化。
非常感谢对这两个问题的任何帮助!
代码:
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
// Change the console's background color.
system ("color F0");
// Declare the variables.
char carType;
string brand, f("Ford"), c("Chevrolet");
int counter = 0, cars = 0;
double days, miles, cost_Day, cost_Miles, day_Total;
cout << "Enter the number of cars you wish to enter: ";
cin >> cars;
cin.ignore();
while (counter <= cars)
{
cout << "Enter the car type (F or C): ";
cin >> carType;
cin.ignore();
cout << "Enter the number of days rented: ";
cin >> days;
cin.ignore();
cout << "Enter the number of miles driven: ";
cin >> miles;
cin.ignore();
if (carType == 'F' || carType == 'f')
{
cost_Day = days * 40;
cost_Miles = miles * .35;
day_Total = cost_Miles + cost_Day;
brand = f;
}
else
{
cost_Day = days * 35;
cost_Miles = miles * .29;
day_Total = cost_Miles + cost_Day;
brand = c;
}
cout << "\nCar Days Miles Cost\n";
cout << left << setw(12) << brand << right << setw(6) << days << right << setw(8) << miles
<< fixed << showpoint << setprecision (2) << setw(8) << right << "$" << day_Total << "\n\n";
counter++;
}
system ("pause");
}
答案 0 :(得分:3)
您已从0 int counter = 0, cars = 0;
然后计算,直到您等于输入的数字(while (counter <= cars)
的“或等于”位)。
作为一个有效的例子,如果我想要3个条目:
Start: counter = 0, cars = 3.
0 <= 3: true
End of first iteration: counter = 1
1 <= 3: true
End of second iteration: counter = 2
2 <= 3: true
End of third iteration: counter = 3
3 <= 3: true (the "or equal" part of this)
End of FORTH iteration: counter = 4
4 <= 3: false -> Stop
我们已经完成了4次迭代而不是3.如果我们只检查“严格小于”(counter < cars
),则第三次迭代结束时的条件将为false,我们已经结束
答案 1 :(得分:1)
你的while循环的标题应该是:
while(counter < cars)
而不是
while(counter <= cars)