编辑了大多数错误,现在编译,但不运行,我做错了什么?

时间:2009-11-07 00:44:48

标签: c++

#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::setprecision;
using std::fixed;

//function prototypes     
void getInput(string &, double);
void calcFedTaxes(double , double, double &, double &);
void calcnetPay(double &,  double , double, double);
void displayInfo(string, double, double, double);

int main()
{   
    //declare constants and variables
    const double FWT_RATE  = .2;
    const double FICA_RATE = .08;
    string dname    = "";
    double dsalary  = 0.0;
    double dfwtTax  = 0.0; 
    double dficaTax = 0.0;
    double dnetPay  = 0.0;

    //display output in fixed-point notation with two decimal places
    cout << fixed << setprecision(2);

    //call function to get input and calculate salary and taxes 
    void getInput(string dname, double dsalary, double dnetPay);

    void calcFedTaxes(double Fsalary, double FwtRate, double FicaRate,
            double & withholdingTax, double & incomeTax); 

    void calcnetPay(double & netPay, double weeklySalary, double fwtTax,
        double ficaTax); 

    void displayInfo (string dname, double dfwtTax, double dficaTax, 
            double dnetPay);

    system ("pause");

}   //end call function


//*****function definitions*****

void getInput(string iname, double isalary)
{
    //enter input items
    cout << "Enter name: ";
    cin >> iname;
    cout << "weekly salary: ";
    cin >> isalary;
}

void calcFedTaxes (double Fsalary, double FwtRate,  double FicaRate, 
        double & withholdingTax, double & incomeTax)
{
    withholdingTax = Fsalary * FwtRate;
    incomeTax      = Fsalary * FicaRate;     
}

void calcnetPay(double & netPay, double weeklySalary, double fwtTax, 
        double ficaTax)
{
    netPay = weeklySalary - fwtTax - ficaTax;
}

void displayInfo(string dname, double dfwtTax,  double dficaTax, 
        double dnetPay)
{
    cout << "name: " << dname;
    cout << "With holding Tax: " << dfwtTax;
    cout << "With holding Fica: "<<dficaTax;
    cout << "Net pay: " <<dnetPay;
    cin>> dnetPay;

    //end of displayInfo function

    return;
}

5 个答案:

答案 0 :(得分:5)

您的代码引用了它未提供的功能。 (这只是一个链接错误,因为这些函数很可能是由您可能要链接的其他库提供的。)

(没有发布任何代码)你可能有一个单独的头文件,它定义了getInput和displayInfo的原型。确保getInput和displayInfo的定义与这些原型实际匹配!注意

void getInput(std::string &foo, double &bar)

不同
void getInput(std::string foo, double bar)

当然还有

void getInpoot(std::string &foo, double &bar)

答案 1 :(得分:3)

随便一眼,我注意到两个明显的错误。

第一个是getInput()

的原型和定义之间的参数不匹配
void getInput(string &, double &) ;
void getInput(string iname , double isalary)

原型期望引用,但定义不是。

一旦你看到第二个就更明显了。函数名称在displayInfo()定义中缺少“a”的简单错字。

void displyInfo(string dname, double dfwtTax,  double dficaTax, 
    double dnetPay)

答案 2 :(得分:1)

main

//call function to get input and calculate salary and taxes
void getInput(string dname, double dsalary, double dnetPay);

void calcFedTaxes(double Fsalary, double FwtRate, double FicaRate,
        double & withholdingTax, double & incomeTax); 

void calcnetPay(double & netPay, double weeklySalary, double fwtTax,
        double ficaTax); 

void displayInfo (string dname, double dfwtTax, double dficaTax, 
        double dnetPay);

不符合你的想法。

你所做的是为函数提供原型。这不会生成任何代码,也不会调用任何函数。

你可能意味着

// call functions to get input and calculate salary and taxes
getInput(dname, dsalary, dnetPay);

double withholdingTax, incomeTax;
calcFedTaxes(dsalary, FWT_RATE, FICA_RATE, withholdingTax, incomeTax);

等等。您尝试调用的这些函数与您实际定义的函数不匹配,您还必须修复这些函数。

答案 3 :(得分:1)

在main()中,您只是原型函数,而不是调用它们:

//call function to get input and calculate salary and taxes 
void getInput(string dname, double dsalary, double dnetPay);

定义了一个函数,现在需要调用它:

getInput(dname, dsalary, dnetPay);

那就是说,你的代码令人困惑。让我们看一下代码中对getInput的三个当前引用:

void getInput(string &, double);
void getInput(string dname, double dsalary, double dnetPay);
void getInput(string iname, double isalary) { ... }

你有两个原型,它们都有你的功能定义不同的签名。在你清理干净之前,你将继续遇到麻烦。

答案 4 :(得分:0)

这些不是标准的库函数,你知道它们来自哪里 - 可能是你的环境/编译器中的东西。

您需要链接库,在visual studio中查看properties-&gt; linker-&gt; input-&gt;其他依赖项,在uinx上您必须将'-lnameoflibrary'传递给编译器