如何为此程序添加循环?

时间:2011-04-12 15:27:58

标签: c++ loops

我的作业问题是:

  

在税收季节,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次?

1 个答案:

答案 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函数中的逻辑并将它放入它自己的函数中。它中预先存在的任何错误都将出现在我提供的功能中。这样的事情超出了这个问题的范围。 (如果我看到一个,我不会指出一个,但我们现实世界的程序员正在努力解决另一件事:有时我们不会允许修复错误,因为我们已经提供了足够的资金只能解决其中的一小部分问题,并且我们被告知需要解决哪些问题。当你是那种喜欢每次都做正确的事情时,这可能会令人沮丧。)