这是家庭作业
所以这是一个工作正常的功能。我必须从文件中找到最昂贵的汽车并将其打印到终端。我将发布我的功能并澄清下面的内容。
以下是文件的格式化方式
赫兹93619
2014年丰田塔科马115.12 12012年本田CRV 85.10 0
2015 Ford Fusion 90.89 0
2013 GMC Yukon 110.43 0
2009 Dodge Neon 45.25 1
Alamo 89502
2011丰田Rav4 65.02 1
2012年马自达CX5 120.75 1
2016斯巴鲁傲虎71.27 0
2015福特F150 112.83 1
2010 Toyota Corolla 50.36 1
预算93035
2008福特嘉年华42.48 0
2009 Dodge Charger 55.36 1
2012 Chevy Volt 89.03 0
2007 Subaru Legacy 59.19 0
2010 Nissan Maxima 51.68 1
void mostExpense(Agency *agencyptr)
{
float largest = 0.0f;
int agencyPosition = 0;
int carPosition = 0;
Car *carptr = agencyptr -> inventory;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
if ((carptr -> getPrice()) > largest)
{
largest = carptr -> getPrice();
agencyPosition = i + 1;
carPosition = j + 1;
}
carptr++;
}
agencyptr++;
carptr = agencyptr -> inventory;
}
switch (agencyPosition)
{
case 1:
agencyptr--; agencyptr--; agencyptr--;
carptr = agencyptr -> inventory;
switch (carPosition)
{
case 1:
carptr -> print();
break;
case 2:
carptr++;
carptr -> print();
break;
case 3:
carptr++; carptr++;
carptr -> print();
break;
case 4:
carptr++; carptr++; carptr++;
carptr -> print();
break;
case 5:
carptr++; carptr++; carptr++; carptr++;
carptr -> print();
break;
}
break;
case 2:
agencyptr--; agencyptr--;
carptr = agencyptr -> inventory;
switch (carPosition)
{
case 1:
carptr -> print();
break;
case 2:
carptr++;
carptr -> print();
break;
case 3:
carptr++; carptr++;
carptr -> print();
break;
case 4:
carptr++; carptr++; carptr++;
carptr -> print();
break;
case 5:
carptr++; carptr++; carptr++; carptr++;
carptr -> print();
break;
}
break;
case 3:
agencyptr--;
carptr = agencyptr -> inventory;
switch (carPosition)
{
case 1:
carptr -> print();
break;
case 2:
carptr++;
carptr -> print();
break;
case 3:
carptr++; carptr++;
carptr -> print();
break;
case 4:
carptr++; carptr++; carptr++;
carptr -> print();
break;
case 5:
carptr++; carptr++; carptr++; carptr++;
carptr -> print();
break;
}
break;
}
}
因此,我对我的项目所拥有的是,我们有3家不同的公司提供汽车租赁服务。每家公司有5辆汽车。我现在所拥有的工作,但它是多余的,它是近200行代码。我遇到的主要问题是我的switch语句。我有3种不同的情况(每个用于3个汽车租赁场所),我首先从最后一个租车场开始。然后我通过每一辆车找到价格。我这样做了3次迭代,我的if功能测试汽车价格相互之间,然后最终打印出最昂贵的汽车。我想要做的是使用switch语句更改我的过程。我该怎么做才能使这个功能更短但仍能提供相同的输出。我已经尝试了很多东西,但这是唯一真正有效的东西,而且我希望有更短的东西,所以当我将来做类似的项目时,我没有近1000行代码一个文件做一些应该相当简单的事情。
任何帮助将不胜感激!
如果需要澄清,请在评论中告诉我。
价格在品牌和型号之后
0和1是真/假(如果汽车可用或不可用)
答案 0 :(得分:1)
似乎您可以将agencyPosition切换案例减少为单个减法。首先确保agencyPosition为1或2或3.然后从agencyPtr中减去4 - agencyPosition。
注意:4-1 = 3,4-2 = 2,4-3 = 1.
if (agencyPosition >= 1 and agencyPosition <= 3) {
agencyPtr -= 4 - agencyPosition;
carptr = agencyptr -> inventory;
switch (carPosition)
// Everything else remains the same.
}