2017-11-13 2 views
0

Also das einzige Problem, das ich mit dem Programm unten finden kann, ist, dass ich die> < vermasselt habe, um die Einkommensteuersätze zu überprüfen. Was habe ich falsch gemacht? Der Rest des Programms läuft wie beabsichtigt mit den Berechnungen alle arbeiten das einzige Problem ist, wie erwähnt, meine Verwendung der weniger als und mehr als die richtige Steuerklammer zu finden. Zum Beispiel; Wenn ich den Jahresverdienst von 46000 (der es in die zweite Steuerklasse legt) verwendet, wird er stattdessen die erste Steuerklasse ausführen, was bedeutet, dass er nur um 20% und nicht um 40% reduziert wird.Ich kann nicht scheinen, die Grundlagen hinter weniger als und mehr als Betreibern zu verstehen, könnte jemand identifizieren, wo ich falsch liege?

//Program 
cout << "This program will help organize your finances. \n"; 
cout << "How much do you earn a year? \n"; 
cin >> finances; 

//Selecting Income Tax Rate 
if (finances <= 11500) { 
    cout << "On your current salary, no income tax will be paid \n"; 
    monthlyPay = (finances/12); 
    cout << "This means you are paid " << monthlyPay << " a month after tax. \n"; 
} 
else if (finances >= 11501 || finances <= 45000) { 
    cout << "On your current salary, you will need to commit 20% of income to pay income tax. \n"; 
    rateReduction = finances * basicRate; 
    taxFreeFinances = finances - rateReduction; 
    monthlyPay = taxFreeFinances/12; 
    cout << "This means you are paid " << monthlyPay << " a month after tax. \n"; 
} 
else if (finances >= 45001 || finances <= 150000) { 
    cout << "On your current salary, you will need to commit 20% of income to pay income tax. \n"; 
    rateReduction = finances * higherRate; 
    taxFreeFinances = finances - rateReduction; 
    monthlyPay = taxFreeFinances/12; 
    cout << "This means you are paid " << monthlyPay << " a month after tax. \n"; 
} 
else if (finances > 15000) { 
    cout << "On your current salary, you will need to commit 20% of income to pay income tax. \n"; 
    rateReduction = finances * addRate; 
    taxFreeFinances = finances - rateReduction; 
    monthlyPay = taxFreeFinances/12; 
    cout << "This means you are paid " << monthlyPay << " a month after tax. \n"; 
} 
else { 
    cout << "You have typed in a value other than a number. Program closing. \n"; 
    return 0; 
} 
+1

'else if (Finanzen> = 45001 || Finanzen <= 150000) 'Du benutzt' || 'wenn du willst' && ' – MFisherKDX

+0

Ah vielen Dank dafür, ich bin ein echter Idiot! –

+0

und ich denke, du hast das Ding auch verpasst, 'sonst wenn (Finanzen> 15000) {' das sollte 'sonst sein wenn (Finanzen> 150000) {' – i3lai3la

Antwort

0

Zwei Dinge:

|| ist OR. Eigentlich wollten Sie AND: && verwenden, oder?

Auch scheint, dass Sie einen Tippfehler in der letzten haben. 15000? oder 150000?

+0

Verpasste den Tippfehler tatsächlich! Vielen Dank! –

+1

Die erste Hälfte des Checks ist sowieso überflüssig, es könnte einfach 'sonst sein (Finanzen <= 45000)' usw. –

1
else if (finances >= 11501 || finances <= 45000) { 

Jede Zahl ist größer als oder gleich 11.501 oder weniger als oder gleich 45.000. Es gibt keine Nummer, für die das nicht stimmt.

10 ist weniger als 45.000. 12.000 ist weniger als oder gleich 45.000. 80.000 ist größer als oder gleich 11.501. Dieser Test fängt alle Nummer.

+0

Ja, ich musste nur ändern || zu && habe ich nicht? Danke: D –

+0

Was ist, wenn 'Finanzen' NaN ist;) – MFisherKDX

+0

Ahhhhhhhhhh Ich muss so viel arbeiten! Zum Glück ist dies nur ein Nebenprojekt und nicht meine College-Arbeit –

Verwandte Themen