我的作业问题是:
在税收季节,J& J会计师事务所每个星期五都会向准备自己纳税申报表的人提供帮助。他们的指控如下。
一个。如果一个人收入低(<= 25,000)且咨询时间小于或等于30分钟,则不收费;否则,服务费是30分钟内正常小时费率的40%。
湾对于其他人,如果咨询时间小于或等于20分钟,则不收取服务费;否则,服务费是20分钟内正常小时费率的70%。
(例如,假设一个人收入低,花费1小时15分钟,小时费率为70.00美元。然后结算金额为70.00 x 0.40 x(45/60)= $ 21.00。)
编写一个程序,提示用户输入每小时费率,总咨询时间以及该人是否收入较低。该程序应输出结算金额。该计划必须包含一个功能,该功能将每小时费率,总咨询时间和表明该人是否收入低的值作为输入。该函数应返回结算金额。该程序可能会提示用户在几分钟内输入咨询时间。
这是我写的代码:
#include <iostream>
using namespace std;
double calculate(char iRate, double cTime, double hRate);
int main()
{
double hRate = 0.0, cTime = 0.0;
char iRate, l('l'), h('h');
cout << "Please enter the hourly rate: ";
cin >> hRate;
cout << "Please enter total consulting time in minutes: ";
cin >> cTime;
cout << "Is the income rate low or high (l - Low | h - High): ";
cin >> iRate;
cout << calculate(iRate, cTime, hRate) << endl;
system("pause");
return 0;
}
double calculate(char iRate, double cTime, double hRate)
{
double bAmount = 0.0;
if (iRate == 'l' && cTime > 30)
bAmount = (hRate * 40) * ((cTime)- 30)/6000;
else if (iRate == 'h' && cTime > 20)
bAmount = (hRate * 70) * ((cTime)- 30)/6000;
return bAmount;
}
我不确定如何为此添加一个循环以便它运行3次?
答案 0 :(得分:2)
我为代码清晰度所做的是将你的逻辑与主要内容分离到另一个函数
void gatherInputAndCalculate()
{
double hRate = 0.0, cTime = 0.0;
char iRate, l('l'), h('h');
cout << "Please enter the hourly rate: ";
cin >> hRate;
cout << "Please enter total consulting time in minutes: ";
cin >> cTime;
cout << "Is the income rate low or high (l - Low | h - High): ";
cin >> iRate;
cout << calculate(iRate, cTime, hRate) << endl;
system("pause");
}
然后在你的主要中,循环它
int main()
{
for(int i = 0; i < 3; i++)
{
gatherInputAndCalculate();
}
return 0;
}
现在,这并不是说您不能将整个逻辑块包装在for循环中,但为了清晰/调试目的,将整合的逻辑块包装到函数中是一种很好的做法。对于像这样的简单分配,它不会发挥作用,但在现实世界中,你的代码库长达数十万行,这确实有帮助,所以现在让好的实践变得容易过渡! / p>
免责声明我没有以任何方式,形状或形式检查您的代码的正确性。我只是采用你在main函数中的逻辑并将它放入它自己的函数中。它中预先存在的任何错误都将出现在我提供的功能中。这样的事情超出了这个问题的范围。 (如果我看到一个,我不会指出一个,但我们现实世界的程序员正在努力解决另一件事:有时我们不会允许修复错误,因为我们已经提供了足够的资金只能解决其中的一小部分问题,并且我们被告知需要解决哪些问题。当你是那种喜欢每次都做正确的事情时,这可能会令人沮丧。)