税收计算器C ++

时间:2015-03-04 21:23:46

标签: c++

我正在编写一个计划,根据婚姻状况,14岁以下儿童的数量,工资总额和养老基金缴纳的工资总额百分比来计算税收。一切似乎都是正确的,但在我的职能taxAmount中无法看到婚姻状况,子女数,工资总额和养老基金百分比。我认为使用&符号(&)会使我的其他函数可以查看这些值。我不能改变我的功能数量,我必须坚持我目前正在使用的两个功能。有没有人有关于如何解决我的问题的建议?错误消息表明,婚姻,子女,总薪酬和养老金未在范围内宣布。

原型是:

void getData(char&, int&, int&, int&);
int taxAmount(int);

我的主要职能:

int main()
{
    char marital;
    int children;
    int grossSalary;
    int pension;

    int amount;

    getData(marital, children, grossSalary, pension);

    cout << "The tax amount is: $" << taxAmount(amount) << endl;


    _getch();
    return 0;
}

我获取数据的功能:

void getData(char& marital, int& children, int& grossSalary, int& pension)
{
    cout << "Enter your marital status. Enter 'm' for married. Enter 's' for";
    cout << " single. \n";
    cin >> marital;
    cout << endl;

    cout << "Enter the number of children you have under the age of 14. \n";
    cin >> children;
    cout << endl;

    cout << "Enter your gross salary. If you are married, enter the combined";
    cout << " income of you and your spouse.";
    cin >> grossSalary;
    cout << endl;

    cout << "Enter the number of the percentage (up to 6) of your gross";
    cout << " income contributed to a pension fund.";
    cin >> pension;
    cout << endl;
}

我计算金额的函数(删除的代码):

int taxAmount(int amount)
{
...
}

1 个答案:

答案 0 :(得分:0)

如果您可以将taxAmount的功能签名更改为:

int taxAmount(int amount, char marital, int children, int grossSalary, int pension)

那么这将是将参数输入函数的最佳方法;或者为了保存输入,可以创建一个包含所有4个值的类,并只传递一个对类的常量引用:

struct TaxRecord {
    char marital;
    int children;
    int grossSalary;
    int pension;
};

...

int taxAmount(int amount, const TaxRecord &record);

另一方面,如果你也不能改变功能签名,那么我建议你制作4值的文件范围而不是main函数的功能范围:

static char marital;
static int children;
static int grossSalary;
static int pension;

int main(int argc, char *argv[]) {
    // ...
}

你需要在C ++中使用static关键字,否则你的变量默认为外部;如果您在C中,则可以删除static关键字,因为这是默认值(尽管请参阅下面的@ wallyk注释)。

这假设maintaxAmount在同一.c / .cpp文件中定义。如果没有,你会做这样的事情:

tax.hpp:

extern char marital;
extern int children;
extern int grossSalary;
extern int pension;

和tax.cpp,只有tax.cpp:

#include "tax.hpp"

char marital;
int children;
int grossSalary;
int pension;

这样每个翻译单元(cpp文件)都可以访问这4个变量。但是将它们保持在文件范围内是静态的,因为名称不会污染整个可执行文件,只会污染一个文件。