从程序中获得错误的输出。编译没有错误

时间:2013-05-27 01:35:42

标签: c++ visual-studio-2010 visual-c++ syntax-error

here is my header file:
#ifndef weeklyEmp_h
#define weeklyEmp_h


// SPECIFICATION FILE weeklyEmp.h
//
//----------------------------------------------------------------------
#include <string>
using namespace std;

class weeklyEmp{
public:
//constructors
weeklyEmp();

weeklyEmp (string initName,
    double initHours,
    double initRate,
    int initExemptions,
    string initFilingStatus);

//--modifiers
void set_hours(double thisWeeksHours);
//post: Set the hours worked for a given week

void set_rate(double thisWeeksRate);
//post: Change the employee's hourly rate of pay

//--accessors
double grosPay () const;
//post: Return gross pay with overtime

double incomeTax() const;
//post: Return the federal income tax

double FICATax() const;
//post: Return the social security tax

string name() const;
//post: Return the employee's name

private:
    string my_name;
    double my_hours;
    double my_rate;
    int my_exemptions;
    string my_filingStatus;


    };

#endif //weeklyEmp_h

这是一个包含的.cpp文件:

#include <iostream>
#include <string>
#include "weeklyEmp.h"

using namespace std;

const double WEEKLY_ALLOWANCE = 39.42;
const double FICA_TAX_RATE = 0.0765;
weeklyEmp::weeklyEmp()
{
my_name = "?name?";
my_hours = 0.0;
my_rate = 0.0;
my_exemptions; 0;
my_filingStatus = "?filingStatus?";
}
weeklyEmp::weeklyEmp(string initName,
    double initHours,
    double initRate,
    int initExemptions,
    string initFilingStatus)
{
    my_name; initName;
    my_hours; initHours;
    my_rate; initRate;
    my_exemptions; initExemptions;
    my_filingStatus; initFilingStatus;
}

//--modifiers

void weeklyEmp::set_hours(double thisWeeksHours)
    //post: Set the hours worked for a given week
{
    my_hours = thisWeeksHours;
}



void weeklyEmp::set_rate(double thisWeeksRate)
//post: Change the employee's hourly rate of pay
{
 my_rate = thisWeeksRate;
}

//--accessors
double weeklyEmp::grosPay() const
//post: Return gross pay with overtime

{if(my_hours <=40) return my_hours * my_rate;
else
return (40*my_rate) + (my_hours-40) * 1.5 * my_rate;
}

double weeklyEmp::incomeTax() const
//post: Return the federal income tax
{
double result(0.0);
double taxableIncome(grosPay() - my_exemptions * WEEKLY_ALLOWANCE); 
if(my_filingStatus == "S" || my_filingStatus == "s")
{
if (taxableIncome <= 23.00)
result = 0.00;
else if(taxableIncome <= 397.00)
result = 0.15 * (taxableIncome - 23.00);
else if(taxableIncome <= 928.00)
result = 56.10 + 0.28 * (taxableIncome - 397.00);
else if(taxableIncome <= 2121.00)
result = 204.78 + 0.33 * (taxableIncome - 928.00);
else
result = 598.47 + 0.28 * (taxableIncome - 2121.00);
} 
if(my_filingStatus == "M" || my_filingStatus == "m")
{
if(taxableIncome <= 65.00)
result = 0.00;
else if(taxableIncome <= 689.00)
result = 0.15 * (taxableIncome - 65.00);
else if(taxableIncome <= 1573.00)
result = 93.60 + 0.28 * (taxableIncome - 689.00);
else if(taxableIncome <= 3858.00)
result = 341.12 + 0.33 * (taxableIncome - 1573.00);
else
result = 1095.17 + 0.28 * (taxableIncome - 3858.00);
} 
/* round to the nearest penny */
/* include compfun.cpp for round function */
result = (result, 2);  
return result;

}

double weeklyEmp::FICATax() const
//post: Return the social security tax
{
    return grosPay() * FICA_TAX_RATE; 
}

string weeklyEmp::name() const
//post: Return the employee's name

{ 
 return my_name;

}

最后是主要的cpp文件:

#include <iostream>
#include <string>
#include "weeklyEmp.h"
#include "COMPFUN.H"

using namespace std;


int main()
{
    string name;
    double rate;
    double hours;
    int exemptions;
    string filingStatus;




    cout <<"Name: ";
    cin >> name;
    cout << "Hourly Rate:";
    cin >> rate;
    cout << "Hours Worked:";
    cin >> hours;
    cout << "Exemptions: ";
    cin >> exemptions;
    cout<< "S) ingle / M) arried: ";
    cin >> filingStatus;
    cout << endl;


weeklyEmp emp(name, hours, rate, exemptions, filingStatus);
double net = emp.grosPay() - emp.incomeTax() - emp.FICATax();




cout << "Employee: " << name << endl;
cout << "Gross  Income  FICA   Net" << endl;
decimals(cout, 2);
cout << emp.grosPay()  << emp.incomeTax() <<emp.FICATax()  <<net  << endl;

cout.width(9); cout << emp.grosPay();
cout.width(13); cout << emp.incomeTax() << endl;





system("pause");
    return 0;
} 

这是我得到的垃圾输出。我认为错误发生在.cpp文件中(不是主要的,但包括在内)。我找不到。

姓名:马克 每小时收费:10 工作小时数:10 豁免:1 S)ingle / M)arried:S

员工:马克 总收入FICA净额 85672853555216210000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000.002.0065539732969740393000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000.00791188802582421710000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000.00 按任意键继续 。 。

1 个答案:

答案 0 :(得分:1)

我很确定你的问题是这个构造函数:

weeklyEmp::weeklyEmp(string initName,
    double initHours,
    double initRate,
    int initExemptions,
    string initFilingStatus)
{
    my_name; initName;
    my_hours; initHours;
    my_rate; initRate;
    my_exemptions; initExemptions;
    my_filingStatus; initFilingStatus;
}

看起来您有;代替=,因此这些成员会因为未初始化而具有未确定的值。如果你有警告启用它应该指出这些行。在gcc中使用-W -Wall -pedantic进行编译会为这些行提供以下警告:

warning: statement has no effect [-Wunused-value]