使用 类 和指针从单独的文件中查找最大价格
Find the largest price from a separate file using classes and pointers
这是作业
所以这是一个工作正常的函数。我必须从文件中找到最昂贵的汽车并将其打印到终端。我将 post 我的功能并阐明我在下面的内容。
文件格式如下
赫兹 93619
2014 丰田塔科马 115.12 1
2012 本田 CRV 85.10 0
2015 福特 Fusion 90.89 0
2013 GMC 育空 110.43 0
2009 道奇霓虹灯 45.25 1
阿拉莫 89502
2011 丰田 Rav4 65.02 1
2012 马自达 CX5 120.75 1
2016 斯巴鲁傲虎 71.27 0
2015 福特 F150 112.83 1
2010款丰田花冠 50.36 1
预算 93035
2008 福特嘉年华 42.48 0
2009 道奇 Charger 55.36 1
2012 款雪佛兰伏特 89.03 0
2007 斯巴鲁力狮 59.19 0
2010 日产千里马 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是true/false(有没有车)
看来您可以将 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.
}
这是作业
所以这是一个工作正常的函数。我必须从文件中找到最昂贵的汽车并将其打印到终端。我将 post 我的功能并阐明我在下面的内容。
文件格式如下
赫兹 93619
2014 丰田塔科马 115.12 1
2012 本田 CRV 85.10 0
2015 福特 Fusion 90.89 0
2013 GMC 育空 110.43 0
2009 道奇霓虹灯 45.25 1
阿拉莫 89502
2011 丰田 Rav4 65.02 1
2012 马自达 CX5 120.75 1
2016 斯巴鲁傲虎 71.27 0
2015 福特 F150 112.83 1
2010款丰田花冠 50.36 1
预算 93035
2008 福特嘉年华 42.48 0
2009 道奇 Charger 55.36 1
2012 款雪佛兰伏特 89.03 0
2007 斯巴鲁力狮 59.19 0
2010 日产千里马 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是true/false(有没有车)
看来您可以将 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.
}