我需要通过我的函数传递什么样的参数。另外我如何让它循环次数达到用户想要的次数?

时间:2016-03-05 20:32:37

标签: c++ function variables scope declaration

所以,我必须做一个包含以下内容的作业问题:

在税收季节,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>
#include <iomanip>
using namespace std;

const int HOUR = 60;
int minutes = 0;
double intake(payment);

void intake()
{
char income, y('y'), n('n');


cout << "Is the income rate over 25,000? Y - Yes | N - No): ";
cin >> income;
switch(income)
{
case 'n':
case 'N':       low_procedure()
    break;
case 'y':
case 'y':       high_procedure()
    break;
default: cout << "Invalid entry. You must indicate low or high income.\n"
  break;
}   

}

int main()
{
intake();

cout<<"You owe: \n";
cout<< payment <<endl;


}

double low_procedure()
{
const double LOW_DISCOUNT = 0.40;
const int LOW_TIME = 30;


consult = getConsultTime()
rate = getRate()

if consult > LOW_TIME
{
minutes = consult - LOW_TIME
result = rate * LOW_DISCOUNT
payment = calcPay
}

else
  cout <<"No additional fees. \n";

return payment;

}

double high_procedure()
{
const double HIGH_DISCOUNT = 0.70;
const int HIGH_TIME = 20;

consult = getConsultTime()
rate = getRate()

if consult > HIGH_TIME
{

minutes = consult - HIGH_TIME
result = rate * HIGH_DISCOUNT


}
else 
  cout<<"No additional fees.";
}

int getConsultTime()
{
int consult = 0;
cout << "How long was the consult for in minutes? \n";
    cin >> consult;

return consult;   

}

double getRate()
{
double rate = 0.00;
cout << "What was the hourly rate? \n";
  cin >> rate;

return rate;   

}

double calcPay
{
double payment = 0.00;

payment = result * (minutes/HOUR);

return payment;

}

我在这里遇到了很多麻烦,因为我意识到我需要在代码中声明变量。我有一种感觉,我让它变得比它需要的更复杂,但是switch语句很重要。我试图通过糟糕,不重要的数据进行筛选。

2 个答案:

答案 0 :(得分:0)

您应该在有意义的最小范围内声明它们。由于您显然在多种功能中使用它们,因此文件范围(通常被认为是全局&#39;而不是本地&#39;)似乎是合适的。

作为替代方案,你可以创建一个具有变量和函数作为成员的类,但在这种情况下它似乎有点过分......

答案 1 :(得分:0)

执行此操作的一种方法是将数据分组到struct,为每个人创建struct的实例,并使所有函数接受指针或{{1}的引用并访问其字段。

(当你学习课程时,你可以忘掉这个答案。)

有很多理由可以避免全局变量(如命名空间污染)。

即使将它们限制在文件范围或命名空间范围内,仍有很多理由可以避免使用静态存储持续时间的变量(如线程安全,初始化顺序)。

经验法则始终是使用尽可能小的范围&#34;。

struct

演示:     https://ideone.com/sWVoHF