2016-11-21 3 views
-7

Я пишу эту программу, которая вычисляет количество часов работы сотрудников. Если работник заканчивает работу более 40 часов, он получает дополнительное время и половину за каждый час, который проходит 40. Моя проблема заключается в том, когда дело доходит до выхода. В выводе указывается сумма налога с продаж, федерального налога, валового дохода и нетто; однако, если сотрудник полагает, что он работал менее 40 часов, все отображается правильно; однако, как только работник заявляет, что он проработал более 40 часов, по какой-то причине он показывает налоги и нетто, брутто как 0,00.Array не отображает правильный вывод

Например, если менее 40, будет отображаться следующее.

F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Tax: F-Tax: Fica: Брутто:

Служащий Последний 39,00 22,00 1,50 60,06 128,70 34,32 858,00

Если больше 40, отображается следующее.

F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Tax: F-Tax: 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). Вероятно, вы хотели использовать оператор -или-равный на одном из этих условий (>= или <=).

Смежные вопросы