2016-11-21 5 views
-7

Ich schreibe dieses Programm, das die Anzahl der Stunden berechnet, die Mitarbeiter arbeiten. Wenn der Mitarbeiter mehr als 40 Stunden arbeitet, bekommt er eine zusätzliche Zeit und die Hälfte für jede Stunde, die vergeht. Mein Problem ist, wenn es um die Ausgabe geht. In der Ausgabe zeigt es die Höhe der Umsatzsteuer, Bundessteuer, Bruttoeinkommen und Netto; Wenn der Arbeitnehmer jedoch angibt, dass er weniger als 40 Stunden gearbeitet hat, wird alles ordnungsgemäß angezeigt. Sobald der Arbeitnehmer jedoch angibt, dass er aus irgendeinem Grund mehr als 40 Stunden gearbeitet hat, zeigt er die Steuern und netto Brutto als 0,00 an.Array zeigt keine korrekte Ausgabe an

Wenn beispielsweise weniger als 40 angezeigt wird, würde Folgendes angezeigt.

F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Steuer: F-Steuer: Fica: Gross:

Mitarbeiter Last 39,00 22,00 1,50 60,06 128,70 34,32 858,00

Wenn mehr als 40 wird das Folgende angezeigt.

F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Steuer: F-Steuer: Fica: Gross:

Mitarbeiter Letzter 45.00 22.00 1.50 0.00 0.00 0.00 0.00

Irgendwelche Tipps, Hinweise, Ratschläge sind 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

Sind Sie sicher, dass Sie einen Wert für 'timeHalf' festgelegt haben, weil es sicher nicht so aussieht. Behandeln Sie auch nicht, wenn die geleisteten Stunden SIND 40, nur über oder unter – Tas

+0

Wenn ein Mitarbeiter mehr als 40 Stunden arbeitet, sind die ersten 40 Stunden dann besonders oder ist es nur die Anzahl der Stunden über 40, die eine Sonderbehandlung erfordern? – Jonas

+0

Sie erhalten "eine zusätzliche Zeit und die Hälfte für jede Stunde, die 40 vergeht", aber Sie tun eineinhalb Stunden für alle Stunden. – molbdnilo

Antwort

0

Weil in Ihren Bedingungen, Sie if(hoursWorked[i] < 40) und if(hoursWorked[i] > 40) überprüfen, aber es gibt keine Bedingung für if(hoursWorked[i] == 40). Wahrscheinlich wollten Sie den Operator -or-equal für eine dieser Bedingungen verwenden (>= oder <=).

Verwandte Themen