我的教授希望我们编写一个程序,而不使用像这样的数组或向量:
使用计算和打印停车费的功能编写程序,这些功能是为将车辆停放在车库中的每位客户计算的。
停车费率:
- 一个停车场收取最低5美元的停车费,最多停车5个小时。
- 车库每小时额外收费0.50美元或每小时超过五小时
- 任何给定的24小时期间的最高费用为10.00美元。假设一次24小时不停车。
您应输入为每位客户停放的小时数。您的程序应以整齐的表格格式打印结果,并应计算并打印收据总数。
程序输出应如下所示:
car------Hours------Charge 1--------2.00--------$5.00 2--------5.00--------$5.00 3--------5.30--------$5.50 etc. total: 3---12.30----$15.50
我只能做到这一点:
include <iostream>
include <conio.h>
include <cmath>
include <iomanip>
using namespace std;
double calculate(double);
int main()
{
double hours,charge;
int finish;
double sumhours;
sumhours=0;
finish=0;
charge=0;
int cars;
cars=0;
do
{
cout<<"Enter the number of hours the vehicle has been parked: "<<endl;
cin>>hours;
cars++;
sumhours+=hours;
finish=cin.get();
if(hours>24)
{
cout<<"enter a time below 24hrs."<<endl;
cars--;
sumhours=sumhours-hours;
}
}
while(finish!=EOF);
double total=calculate(hours);
cout<<total<<": "<<(cars-1)<<": "<<sumhours;
while(!_kbhit());
return 0;
}
double calculate(double time)
{
double calculate=0;
double fees;
if(time<=5)
return 5;
if(time>15)
return 10;
time=ceil(time);
fees=5+(.5*(time-5));
return calculate;
}
答案 0 :(得分:3)
由于这是作业,这里有一个算法:
1.打印头。
2.清除运行总计变量
3.虽然不是文件的结尾
3.1阅读记录。
3.2打印记录内容
3.3 将记录字段值添加到运行总计变量(提示!提示!)
3.4。最终而
4.打印运行总计变量。
您可能需要使用运行总计变量进行一些额外的计算,尤其是平均值。
编辑1:正在运行的总变量示例
int sum = 0; // This is the running total variable.
const unsigned int QUANTITY = 23;
for (unsigned int i = 0; i < QUANTITY; ++i)
{
cout << "Adding " << i << " to sum.\n";
sum += i;
}
cout << "Sum is: " << sum << "\n";
cout.flush();
在此示例中,仅存储数据“i”。 sum
变量是一个运行总计。
寻找你的任务中的相似之处。
编辑2:检测cin输入结束的示例
char reply = 'n';
while (tolower(reply) != 'y')
{
cout << "Do you want to quit? (y/n)";
cout.flush();
cin >> reply;
cin.ignore(1000, '\n'); // Eat up newline.
}
cout << "Thanks for the answer.\n";
cout.flush();
答案 1 :(得分:2)
由于您无法使用数组或向量,我认为您应该在处理每辆车时打印停车数据。伪代码:
While more cars:
Read data for next car
Calculate cost
Print data
Add to running totals
End while
Print totals
答案 2 :(得分:1)
在每次迭代时,生成相关输出,但不将其流式传输到std::cout
。而是将其流式传输到std::stringstream
对象。然后,最后,将该对象流式传输到std::cout
。只需保持输入值的运行累积即可完成数学运算。
当然,这假定在这项家庭作业的背景下使用std::stringstream
不被视为“作弊”。
答案 3 :(得分:0)
您可以尝试将值存储在链表结构中而不是数组中。链接列表非常适合动态存储。 试试本教程http://www.cprogramming.com/tutorial/lesson15.html
答案 4 :(得分:0)
我的建议是使用递归方法,该方法首先接受输入,询问是否还有输入。如果有更多输入,则它会自行调用。如果没有更多输入,它会输出当前的汽车,然后返回到目前为止在结构中添加的总和。
这种方法的唯一问题是它会以输入的反向输出输入的汽车,但是没有数组或文件可以保存到。