使用数据结构和数组查找总和的问题
Problems finding out total sum using data structures and arrays
我有这个代码,有几个功能,我几乎完成了,我只是很难找到我的程序的租金成本。我的程序读取汽车和租赁成本的文本文件,如下所示:
2014 Toyota Tacoma 115.12 1
2012 Honda CRV 85.10 0
2015 Ford Fusion 90.89 0
2013 GMC Yukon 110.43 0
2009 Dodge Neon 45.25 1
2011 Toyota Rav4 65.02 1
2012 Mazda CX5 86.75 1
2016 Subaru Outback 71.27 0
2015 Ford F150 200.83 1
2010 Toyota Corolla 50.36 1
float字符是价格(租赁成本)
但是,我希望用户输入车号(1-10)选择多少天并输出租赁成本。我只是有麻烦,它将如何读取输入的汽车用户想要的。这是我的主代码,但我需要的是告诉情况3是否需要工作。
#include <iostream>
#include <fstream>
using namespace std;
struct car {
int year;
char make[10];
char model[10];
float price;
int available;
} ;
void menu();
// Main Function
int main ()
{
// declare variables
int carAmount = 10;
int choice;
car carLib[carAmount];
char filename[10];
ifstream carInData;
float mostExpensive = 0;
int MostExpensiveIndex;
int count = 0;
int days;
int rentalCost = 0;
bool menu1 = false;
//prompt user for input file
cout << " Enter file name: ";
cin >> filename;
// Start loop menu
while(menu1 = true){
menu();
carInData.open(filename);
cin >> choice;
if (carInData.is_open()) {
// read list of names into array
for (; count < carAmount; count++) {
carInData >> carLib[count].year >> carLib[count].make >> carLib[count].model >> carLib[count].price >> carLib[count].available;
}
}
switch (choice) {
// Case 1 closes menu
case 1:
return 0;
break;
// Case 2 displays if car is available if 1, unavailable if 0
case 2:
// itterate through car array
for(count = 0; count < carAmount; count++){
// Displays if car is available or not
if (carLib[count].available == 1)
cout << " Available ";
else
cout << " Unavailable ";
// Display Cars
cout << carLib[count].year << " " << carLib[count].make << " " << carLib[count].model << " " << carLib[count].price << " " << "n";
}
break;
// Display only available cars
case 3:
// itterate through car array
for(count = 0; count < carAmount; count++){
// Displays only available cars
if (carLib[count].available == 1){
cout << " Available ";
// Display Cars
cout << carLib[count].year << " " << carLib[count].make << " " << carLib[count].model << " " << carLib[count].price << " " << "n";
}
}
break;
// Calculates rental cost
case 4:
cout << " Enter car number and how many days " << "n";
cout << " Days: ";
cin >> days;
cout << "n" << "Car: ";
cin >> carLib[count].price;
rentalCost += days*count;
cout << " Rental Cost for " << days << " days is " << rentalCost << "n";
break;
// Finds most expensive car
case 5:
MostExpensiveIndex = count;
for (size_t carIndex = 0; carIndex < carAmount; ++carIndex) {
if (carLib[carIndex].price <= mostExpensive) continue;
mostExpensive = carLib[carIndex].price;
MostExpensiveIndex = carIndex;
}
const car & carI = carLib[MostExpensiveIndex];
cout << " Most Expensive car is: " << " " << carI.year << " " << carI.make << " " << carI.model << " " << carI.price << "n";
break;
}
}
return 0;
}
void menu()
{
cout << " 1 - Exit program.n";
cout << " 2 - Show Carsn";
cout << " 3 - Show only available cars.n";
cout << " 4 - Rental Costn";
cout << " 5 - Most Expensive Carn";
}
除非我误解了你的代码应该如何工作,我认为情况3工作得很好。然而,你应该担心的是情况4
case 4:
cout << " Enter car number and how many days " << "n";
cout << " Days: ";
cin >> days;
cout << "n" << "Car: ";
cin >> carLib[count].price; // WHY IS THE USER CHANGING THE PRICE?
rentalCost += days*count; // WHY IS THE PRICE "DAYS * (CAR ID #)"
cout << " Rental Cost for " << days << " days is " << rentalCost << "n";
break;
你可以在那里看到我的评论。我要把它改成
case 4:
cout << " Enter car number and how many days " << "n";
cout << " Days: ";
cin >> days;
cout << "n" << "Car: ";
cin >> count ;
// Note the decrement of 'count' by one, since you expect the user
// to enter a number 1-10
// Should probably include a check that the 'count' is valid
rentalCost += days*carLib[count-1].price;
cout << " Rental Cost for " << days << " days is " << rentalCost << "n";
break;
注意,carLib
从0到>9递增,但是您的用户可能认为它从1到10递增。当您打印选项2(所有汽车信息)时,包含您期望用户提供的汽车ID号可能会有所帮助。
还有几个问题要问你
- 您将租金成本存储为
int
(不确定这是否是设计),因此只需记住days*price
计算将被四舍五入。 - 租金成本是递增越来越大,所以我猜用户是租多辆车? 在增加用户的租车成本之前,你也许应该检查一下用户是否真的可以租到车。
相关文章:
- 混合组合和继承的C++问题
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 消费者和生产者问题的双重缓冲
- 运算符继承和 cpp 核心准则 c.128 的问题
- C++中的指针和常量问题不大
- 标准::enable_if 和标准::is_arithmetic 作为模板参数的问题
- 我的问题是关于C++中数字和序列的重复以及如何打印它们?
- 涉及指针和手动实现的矩阵类的问题
- 有关纯 ECS(实体组件系统)和更新系统的问题
- 构造函数和 G++ 编译配方的问题
- 现代C++的libcurl和JSON问题
- 关于仅正确使用二传手和变量的问题
- 关于Stroustrup C++书的自动和{}列表问题
- C++正确书写和打印复数精度 (cout) 的问题?
- 具有sleep_for和sleep_until功能的 gcc 可能存在的问题
- 我有一个关于C++提升的问题:: asio 和 std :: 异步
- C++编译 strlen 和 strcpy 的问题
- 连接 MATLAB 和 Visual Studios 的问题
- Sinlge 链表,C++,删除所有和搜索功能的问题
- 反向和计数字符串的 C++ 问题