C++ Void函数使用同一变量打印两个不同的答案
我上周的作业是 编写一个程序,读取2辆车消耗的汽油升数和行驶里程数,然后输出每辆车每加仑燃油消耗的里程数,并比较这两种车的燃油效率 我完成了。本周项目将修改以前的项目和 添加两个void函数: 一个叫做userInstruction的命令告诉用户该做什么 另一个displayResult显示原始信息(行驶的升数和英里数)和结果(每加仑英里数) 看来我已经设法使它大部分工作。它至少可以编译和运行。然而,1号车似乎显示了2号车使用的燃油升数和行驶英里数,尽管它的每加仑英里数是正确的。我不确定我做错了什么。也许我完全偏离了她想要的,这就是为什么我不明白 另外,作为一个附带问题,是否有任何方法将“对car 2执行相同的操作”输入到C++ Void函数使用同一变量打印两个不同的答案,c++,function,void,C++,Function,Void,我上周的作业是 编写一个程序,读取2辆车消耗的汽油升数和行驶里程数,然后输出每辆车每加仑燃油消耗的里程数,并比较这两种车的燃油效率 我完成了。本周项目将修改以前的项目和 添加两个void函数: 一个叫做userInstruction的命令告诉用户该做什么 另一个displayResult显示原始信息(行驶的升数和英里数)和结果(每加仑英里数) 看来我已经设法使它大部分工作。它至少可以编译和运行。然而,1号车似乎显示了2号车使用的燃油升数和行驶英里数,尽管它的每加仑英里数是正确的。我不确定我做错了
userInstruction
void函数中
const double LPG = 0.264179;
double mpg(double miles, double liters);
void userInstruction();
void displayResult(double mpg1, double mpg2, double liters, double miles);
int main()
{
char keepGoing;
double liters, miles, mpg1, mpg2;
do
{
userInstruction();
cin >> liters;
cin >> miles;
//calling function
mpg1 = mpg(miles, liters);
cout << endl << endl << "Do the same for Car 2. \n" << endl;
cin >> liters;
cin >> miles;
mpg2 = mpg(miles, liters);
displayResult(mpg1, mpg2, liters, miles);
if (mpg1 == mpg2)
{
cout << "Both cars have the same fuel efficiency. \n" << endl;
}
else if (mpg1 > mpg2)
{
cout << "Car 1 has better fuel efficiency. \n" << endl;
}
else
{
cout << "Car 2 has better fuel efficency. \n" << endl;
}
//Allows for repeating
cout << "Do you wish to keep going? (y/n) \n";
cin >> keepGoing;
}
while (keepGoing == 'y' || keepGoing == 'Y');
system("pause");
return 0;
}
double mpg(double miles, double liters)
{
double milesPerGallon;
milesPerGallon = miles / (liters * LPG);
return milesPerGallon;
}
void userInstruction()
{
cout << "Please enter the liters of gasoline consumed as well as the miles travelled. \n" << endl;
}
void displayResult(double mpg1, double mpg2, double liters, double miles)
{
cout << "Car 1 used: " << liters << " liters of fuel \n";
cout << "Car 1 drove: " << miles << " miles \n";
cout << "Car 1 gets: " << mpg1 << " miles per gallon \n" << endl;
cout << "Car 2 used: " << liters << " liters of fuel \n";
cout << "Car 2 drove: " << miles << " miles \n";
cout << "Car 2 gets: " << mpg2 << " miles per gallon \n" << endl;
}
const double LPG=0.264179;
双加仑(双英里,双升);
void userInstruction();
无效显示结果(双mpg1、双mpg2、双升、双英里);
int main()
{
炭保持;
双升,英里,mpg1,mpg2;
做
{
用户指令();
cin>>升;
cin>>英里;
//调用函数
mpg1=每加仑(英里,升);
库特英里;
mpg2=每加仑(英里,升);
显示结果(mpg1、mpg2、升、英里);
如果(mpg1==mpg2)
{
车辆1和车辆2对于升
和英里
有各自的值集,但您只保存用户输入的最后一组值,然后将最后一组值传递到显示结果()
,因此两辆车的显示值都相同。您需要分别通过这两个设置,就像您已经通过两个计算MPG一样,例如:
double mpg(double miles, double liters);
void userInstruction();
void displayResult(double miles1, double liters1, double mpg1,
double miles2, double liters2, double mpg2);
int main()
{
double miles1, liters1, mpg1;
double miles2, liters2, mpg2;
char keepGoing;
do
{
userInstruction();
cin >> liters1;
cin >> miles1;
//calling function
mpg1 = mpg(miles1, liters1);
cout << endl << endl << "Do the same for Car 2. \n" << endl;
cin >> liters2;
cin >> miles2;
mpg2 = mpg(miles2, liters2);
displayResult(miles1, liters1, mpg1, miles2, liters2, mpg2);
//Allows for repeating
cout << "Do you wish to keep going? (y/n) \n";
cin >> keepGoing;
}
while (keepGoing == 'y' || keepGoing == 'Y');
system("pause");
return 0;
}
static const double LPG = 0.264179;
double mpg(double miles, double liters)
{
return miles / (liters * LPG);
}
void userInstruction()
{
cout << "Please enter the liters of gasoline consumed as well as the miles travelled for Car 1. \n" << endl;
}
void displayResult(double miles1, double liters1, double mpg1,
double miles2, double liters2, double mpg2)
{
cout << "Car 1 used: " << liters1 << " liters of fuel \n";
cout << "Car 1 drove: " << miles1 << " miles \n";
cout << "Car 1 gets: " << mpg1 << " miles per gallon \n" << endl;
cout << "Car 2 used: " << liters2 << " liters of fuel \n";
cout << "Car 2 drove: " << miles2 << " miles \n";
cout << "Car 2 gets: " << mpg2 << " miles per gallon \n" << endl;
if (mpg1 == mpg2)
{
cout << "Both cars have the same fuel efficiency. \n" << endl;
}
else if (mpg1 > mpg2)
{
cout << "Car 1 has better fuel efficiency. \n" << endl;
}
else
{
cout << "Car 2 has better fuel efficency. \n" << endl;
}
}
欢迎使用Stack Overflow。请查看我们的页面。如果您简化了代码(即让它做得更少)错误是显而易见的,您可能根本不需要我们的帮助。错误的值来自哪里?来自哪个变量?正确的值应该如何进入该变量?或者如果它确实进入该变量,您的代码是否可能在某个点覆盖它?您的输出函数只获得一个升值和一个英里值;它确实存在不过,mpg有两个值。它打印两次升,你认为这会产生两个不同的值吗?@Yunnosch感谢你的输入和指导。我在我的函数中添加了liters1,liters2,miles1,miles2
,现在它可以工作了。谢谢。这基本上就是我修复它的方式,它可以工作,但我不确定确切的原因,谢谢谢谢你的解释。另外,谢谢你的struct
建议。这不是我们已经讨论过的内容,但是这样看起来更干净了,所以我会在前面做一些阅读。
double mpg(double miles, double liters);
void userInstruction();
void displayResult(double miles1, double liters1, double mpg1,
double miles2, double liters2, double mpg2);
int main()
{
double miles1, liters1, mpg1;
double miles2, liters2, mpg2;
char keepGoing;
do
{
userInstruction();
cin >> liters1;
cin >> miles1;
//calling function
mpg1 = mpg(miles1, liters1);
cout << endl << endl << "Do the same for Car 2. \n" << endl;
cin >> liters2;
cin >> miles2;
mpg2 = mpg(miles2, liters2);
displayResult(miles1, liters1, mpg1, miles2, liters2, mpg2);
//Allows for repeating
cout << "Do you wish to keep going? (y/n) \n";
cin >> keepGoing;
}
while (keepGoing == 'y' || keepGoing == 'Y');
system("pause");
return 0;
}
static const double LPG = 0.264179;
double mpg(double miles, double liters)
{
return miles / (liters * LPG);
}
void userInstruction()
{
cout << "Please enter the liters of gasoline consumed as well as the miles travelled for Car 1. \n" << endl;
}
void displayResult(double miles1, double liters1, double mpg1,
double miles2, double liters2, double mpg2)
{
cout << "Car 1 used: " << liters1 << " liters of fuel \n";
cout << "Car 1 drove: " << miles1 << " miles \n";
cout << "Car 1 gets: " << mpg1 << " miles per gallon \n" << endl;
cout << "Car 2 used: " << liters2 << " liters of fuel \n";
cout << "Car 2 drove: " << miles2 << " miles \n";
cout << "Car 2 gets: " << mpg2 << " miles per gallon \n" << endl;
if (mpg1 == mpg2)
{
cout << "Both cars have the same fuel efficiency. \n" << endl;
}
else if (mpg1 > mpg2)
{
cout << "Car 1 has better fuel efficiency. \n" << endl;
}
else
{
cout << "Car 2 has better fuel efficency. \n" << endl;
}
}
struct travelInfo
{
double miles, liters;
double mpg() const;
void getUserInput(const string &prompt);
void displayResult(const string &name) const;
};
void userInstruction(travelInfo &car1, travelInfo &car2);
void displayResult(const travelInfo &car1, const travelInfo &car2);
int main()
{
travelInfo car1, car2;
char keepGoing;
do
{
userInstruction(car1, car2);
displayResult(car1, car2);
//Allows for repeating
cout << "Do you wish to keep going? (y/n) \n";
cin >> keepGoing;
}
while (keepGoing == 'y' || keepGoing == 'Y');
system("pause");
return 0;
}
static const double LPG = 0.264179;
double travelInfo::mpg() const
{
return miles / (liters * LPG);
}
void travelInfo::getUserInput(const string &prompt)
{
cout << prompt << " \n" << endl;
cin >> liters;
cin >> miles;
}
void travelInfo::displayResult(const string &name) const
{
cout << name << " used: " << liters << " liters of fuel \n";
cout << name << " drove: " << miles << " miles \n";
cout << name << " gets: " << mpg() << " miles per gallon \n";
}
void userInstruction(travelInfo &car1, travelInfo &car2)
{
car1.getUserInput("Please enter the liters of gasoline consumed as well as the miles travelled for Car 1.");
cout << endl << endl;
car2.getUserInput("Do the same for Car 2.");
}
void displayResult(const travelInfo &car1, const travelInfo &car2)
{
double mpg1 = car1.mpg(), mpg2 = car2.mpg();
car1.displayResult("Car 1");
cout << endl;
car2.displayResult("Car 2");
cout << endl;
if (mpg1 == mpg2)
{
cout << "Both cars have the same fuel efficiency. \n" << endl;
}
else if (mpg1 > mpg2)
{
cout << "Car 1 has better fuel efficiency. \n" << endl;
}
else
{
cout << "Car 2 has better fuel efficency. \n" << endl;
}
}