所以,我必须做一个包含以下内容的作业问题:
在税收季节,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语句很重要。我试图通过糟糕,不重要的数据进行筛选。
答案 0 :(得分:0)
您应该在有意义的最小范围内声明它们。由于您显然在多种功能中使用它们,因此文件范围(通常被认为是全局&#39;而不是本地&#39;)似乎是合适的。
作为替代方案,你可以创建一个具有变量和函数作为成员的类,但在这种情况下它似乎有点过分......
答案 1 :(得分:0)
执行此操作的一种方法是将数据分组到struct
,为每个人创建struct
的实例,并使所有函数接受指针或{{1}的引用并访问其字段。
(当你学习课程时,你可以忘掉这个答案。)
有很多理由可以避免全局变量(如命名空间污染)。
即使将它们限制在文件范围或命名空间范围内,仍有很多理由可以避免使用静态存储持续时间的变量(如线程安全,初始化顺序)。
经验法则始终是使用尽可能小的范围&#34;。
struct