2017-05-21 4 views
-2

Ich arbeite an einem Projekt für eine Klasse, in der ich Bruttolohn, Überstundenbezahlung und Nettolohn nach Steuern berechnen soll. Alles unter $ 600 wird mit 15% besteuert und alles über $ 600 wird mit 20% besteuert. Ich glaube, ich habe alle meine Berechnungen korrekt; Wenn ich das Programm ausführe, bekomme ich falsche Antworten. Wenn ich Stunden bei 45 und einen Lohn von 15,25 Dollar eingeben sollte, sollte ich einen Bruttolohn von 724,38 Dollar und einen Nettolohn von 659,26 Dollar bekommen. Stattdessen gebe ich ein Nettogehalt von 712,50 US-Dollar und ein Nettogehalt von 645,00 US-Dollar zurück, was ziemlich merkwürdig ist.Nachbezahlungsrechner gibt falsche Beträge zurück

#include<stdio.h> 

int main(void){ 

    int hoursWorked, hourlyWage; 
    float grossPay, netPay, overHours; 

    printf("Please input number of hours worked. "); 
    scanf(" %i", &hoursWorked); 

    printf("Please input your hourly wage. "); 
    scanf(" %i", &hourlyWage); 

    if(hoursWorked <= 40){ 
     grossPay = hourlyWage * hoursWorked; 
    } 
    else{ 
     if(hoursWorked > 40){ 
      overHours = hoursWorked - 40; 
      grossPay = (overHours * (hourlyWage * 1.5)+ (hourlyWage * 40)); 
     } 
    } 
    if(grossPay <= 600){ 
     netPay = (grossPay - (grossPay * .15)); 
    } 
    else{ 
     if(grossPay > 600){ 
      netPay = (grossPay - (600 * .15) + ((grossPay - 600) * .2)); 
     } 
    } 
    printf("Your gross pay was $%.2f", grossPay); 
    printf("\nAnd your net pay was $%.2f after taxes", netPay); 

    return 0; 
} 

Antwort

2
int hoursWorked, hourlyWage; 

ein Lohn von $ 15,25

Ihre int Variable nicht 15.25 halten kann. Und der scanf Formatcode %i liest keine Dezimalstellen.

Daher sind alle Ihre Berechnungen mit einem Gehalt von 15, nicht 15.25 statt.

Wenn Sie das einfachste Debugging durchgeführt hätten, entweder einen echten Debugger verwenden und Variablenuhren einstellen oder einfach nur die Ergebnisse der einzelnen Variablen ausdrucken würden, hätten Sie diese leicht selbst finden können. Lernen Sie zu debuggen.

+0

Danke, das macht Sinn. Was würde ich verwenden, um das zu korrigieren? – RLuck

+0

@ user3225965: Sie haben andere Variablen, die Bruchwerte gerade fein halten, wie 'bruttoPay'. Was ist unterschiedlich? Welche Datentypen haben Sie kennengelernt? –

Verwandte Themen