2016-11-21 71 views
-7

我正在编写这个程序来计算员工工作的小时数。如果员工的工作时间超过40小时,那么他将获得额外的时间,并且每过40小时就会有一半的时间。我的问题是涉及到输出。在输出中,它显示销售税,联邦税,总收入和净额;然而,如果员工认为他工作时间少于40小时,则所有事情都可以正常显示;然而,一旦员工投入,他出于某种原因已经工作了超过40小时,它显示了税收,净额,毛额为0.00。阵列没有显示正确的输出

例如,如果小于40,将显示以下内容。

F-名称:L-名称:HorsWrked:HrlyRate:TimeHalf:S-税:F-税:FICA:毛重:

员工最后39.00 22.00 1.50 60.06 128.70 34.32 858.00

如果超过40,正在显示以下内容。

F-名称:L-名称:HorsWrked:HrlyRate:TimeHalf:S-税:F-税:FICA:毛重:

员工最后45.00 22.00 1.50 0.00 0.00 0.00 0.00

任何提示,提示,建议是appreciated.``

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 



{ 
//Set variables 
int const size = 2; 
double timeHalf = 0.0, hoursWorked[size], gross[size], net[size], hourlyRate[size], totalTax; 
string firstName[size], lastName[size]; 
const double stateTax = 0.07, fedTax = 0.15, fica = 0.04; 
double sTax = 0.0, fTax = 0.0, fiTax; 




for(int i = 0; i < size; i++)   //Initialize for loop 
{ 

    cout<<"Please enter your first name? " <<endl;   //Display first name 
    cin>>firstName[i]; 
    cout<<"Please enter your last name? " <<endl;   //Display last name 
    cin>>lastName[i]; 
    cout<<"How many hours did you work? " <<endl;   //Dispaly hours worked 
    cin>>hoursWorked[i]; 
    cout<<"What's the hourly rate? " <<endl;    //Display hourly rate 
    cin>>hourlyRate[i]; 




    if(hoursWorked[i] < 40) 
    { 
     gross[i] = hoursWorked[i] * hourlyRate[i]; 

    } 


    else if(hoursWorked[i] > 40) 
    { 
     gross[i] = hoursWorked[i] * (hourlyRate[i] * timeHalf); 


    } 
} 

cout<<" \t\tXYX \n "; 
cout<<"F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Tax: F-Tax: Fica: Gross: Net: \n"; 

for(int i = 0; i < size; i++) 
{ 

    sTax = gross[i] * stateTax; 
    fTax = gross[i] * fedTax; 
    fiTax = gross[i] * fica; 
    totalTax = gross[i] * (stateTax + fedTax + fica); 
    timeHalf = 1.5; 
    net[i] = gross[i] - totalTax; 


    cout<<firstName[i]<<"\t " << setw(10) <<fixed <<setprecision(2) << lastName[i]<<"\t " 
    << hoursWorked[i]<<"\t " <<hourlyRate[i] <<"\t " <<timeHalf<<"\t " <<sTax <<"\t " 
    <<fTax <<"\t " <<fiTax <<"\t " <<gross[i] <<"\t " <<net[i] <<"\t "; 
} 
} 
+0

你确定你给'timeHalf'设置了一个值,因为它确实看起来不像它。另外,如果工作时间为ARE 40,仅高于或低于 – Tas

+0

,如果员工工作时间超过40小时,那么特殊处理的前40小时还是特殊处理,还是只有40以上的小时数需要特殊处理? – Jonas

+0

你会得到“额外的时间和一半通过40小时的每一小时”,但你在所有的时间里都花了一半时间。 – molbdnilo

回答

0

因为在你的条件,你检查if(hoursWorked[i] < 40)if(hoursWorked[i] > 40),但对于if(hoursWorked[i] == 40)没有条件。您可能想在这些条件之一(>=<=)上使用 - 或 - 等号运算符。