我需要什么样的参数来传递我的函数.另外,我如何让它根据用户想要的次数循环



所以,我必须做一个家庭作业问题,需要以下内容:

在报税季节,强生会计师事务所每周五都会为准备自己报税表的人提供帮助。他们的收费如下。

一个。如果一个人收入较低(<=25,000),咨询时间少于或等于30分钟,则不收取任何费用;否则,超过30分钟的服务费为正常小时费率的40%。

二.对于其他人,如果咨询时间小于或等于20分钟,则不收取服务费;否则,超过 20 分钟的服务费为正常小时费率的 70%。

(例如,假设一个人收入较低,花费了 1 小时 15 分钟,每小时费率为 70.00 美元。然后计费金额为 70.00 x 0.40 x (45/60) = 21.00 USD。

编写一个程序,提示用户输入小时费率、总咨询时间以及此人是否收入低。程序应输出计费金额。该程序必须包含一个函数,该函数将小时费率、总咨询时间和指示该人是否低收入的值作为输入。该函数应返回计费金额。该程序可能会提示用户输入以分钟为单位的咨询时间。

这是我的代码:

#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 语句很重要。我正在尝试筛选不良,不重要的数据。

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

作为替代方案,您可以创建一个将变量和函数作为成员的类,但在这种情况下,这似乎有点矫枉过正......

一种方法

是将数据分组到struct中,为每个人创建一个struct的实例,并使所有函数接受该struct的指针或引用并访问其字段。

(当你学习课程时,你可能会忘记这个答案。

避免全局变量(如命名空间污染)的原因有很多。

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

经验法则始终是"使用尽可能小的范围"。

#include <iostream>
using namespace std;
struct AccountData {
    int consult;
    int minutes;
    double rate;
    double result;
    double payment;
};
AccountData makeAccount(int consult, int minutes, double rate, double result, double payment)
{
    return AccountData({consult, minutes, rate, result, payment});
}
void high_procedure(AccountData *thisAccount)
{
    cout << "do something with the account, like printing out "payment ""
         << thisAccount->payment
         << "n";
}
void low_procedure(AccountData *thisAccount)
{
    thisAccount->payment+=1.0;
    cout << "do something with the account, like adding 1 to "payment ""
         << "n";
}
int main() {
    AccountData account1 = makeAccount(1,2,3,4,5);
    high_procedure(&account1);
    low_procedure(&account1);
    high_procedure(&account1);
    AccountData account2 = makeAccount(10,20,30,40,50);
    high_procedure(&account2);
    low_procedure(&account2);
    high_procedure(&account2);
    return 0;
}

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

最新更新