![]() |
Probleme mit Programmierhausübung in C
Hallo !!!
Ich bitte um Hilfe bei meiner Programmierhausübung in C. Folgendes Beispiel: #include "stdio.h" #include "conio.h" void main() { double brutto, prozent, netto, steuer1, steuer2, steuer3; steuer1 = 3640; steuer2 = 14534; steuer3 = 29069; printf ("EinkommensSteuerBerechnungsProgramm von Andreas Schmidberger"); printf ("\n\n\nBitte geben Sie ihr BRUTTO Einkommen ein-->"); scanf ("%lf",&brutto); if (brutto>steuer3) { prozent = 50; netto=prozent*brutto/100; printf("Der Nettobetrag betr„gt %d Euro",&netto); } else if (brutto<=steuer3); { //unter 29 069 prozent = 41; netto=prozent*brutto/100; printf("Der Nettobetrag betr„gt %d Euro",&netto); } else if (brutto<=steuer2); { //unter 14 534 prozent = 31; netto=prozent*brutto/100; printf ("Der Nettobetrag betr„gt %d Euro",&netto); } else if (brutto<=steuer1); { //unter 3 640 netto = brutto; printf ("Der Nettobetrag betr„gt %d Euro",&netto); } else getch(); } Ich habe es im DOS-Compiler Turbo C++ von Borland programmiert... Es tritt immer folgender Fehler auf: else misplaced Wo liegt der Fehler :confused: Ich bin verzweifelt und habe schon alles ausprobiert :heul: Danke im voraus INFECTED MUSHROOM |
Re: Probleme mit Programmierhausübung in C
Zitat:
~ |
Du solltest eventuell auch überlegen die If-Bedingungen anders anzuordnen, da bei einer Eingabe von z.B. Brutto=10000 die Bedingung if (brutto<=steuer3); erfüllt ist und daher die 'richtige' Bedingung if (brutto<=steuer2); nicht mehr erfüllt werden kann. ;)
|
hi käptn!
Was meinst du? Entweder habe ich es nicht genau verstanden oder ich habe einen anderen Fehler. #include "stdio.h" #include "conio.h" void main() { double brutto, prozent, netto, steuer1, steuer2, steuer3; steuer1 = 3640; steuer2 = 14534; steuer3 = 29069; printf ("EinkommensSteuerBerechnungsProgramm von Andreas Schmidberger"); printf ("\n\n\nBitte geben Sie ihr BRUTTO Einkommen ein-->"); scanf ("%lf",&brutto); if (brutto>steuer3); { prozent = 50; netto=prozent*brutto/100; printf("Der Nettobetrag betr„gt %d Euro",&netto); } else <--- Misplaced else if (brutto<=steuer3); { prozent = 41; netto=prozent*brutto/100; printf("Der Nettobetrag betr„gt %d Euro",&netto); } else <--- Misplaced else if (brutto<=steuer2); { prozent = 31; netto=prozent*brutto/100; printf ("Der Nettobetrag betr„gt %d Euro",&netto); } else <--- Misplaced else if (brutto<=steuer1); { netto = brutto; printf ("Der Nettobetrag betr„gt %d Euro",&netto); } getch(); } Ich komme einfach nicht weiter. Ich bin verzweifelt... Danke im Voraus Infected Mushroom |
...der "strichpunkt" nach der if-bedingung ist nix...
deswegen "misplaced else" |
Danke es funktioniert
Aber hat irgendwer eine ahnung warum immer -34 herauskommt (egal nach welcher eingabe) :confused: MfG Infected Mushroom |
Die ifs sind logisch falsch angeordnet es zieht entweder der erste if Vergleich oder der zweite. Du mußt im zweiten auf größer steuer2 vergleichen und nicht kleiner gleich steuer3 :rolleyes:
Der Fehler mit -34 passiert, weil Du im printf %d anstatt %lf für eine double Variable wie netto sie darstellt verwendest. Die printf Funktion nimmt einen 16bit integer Wert vom Stack. |
Das Funktioniert ABER
jetzt kommt egal welchen Wert ich eingebe 0.0000000 Euro heraus. I gibs bald auf :heul: |
PS: Aktueller Quellcode
#include "stdio.h" #include "conio.h" void main() { double brutto, prozent, netto, steuer1, steuer2, steuer3; steuer1 = 3640; steuer2 = 14534; steuer3 = 29069; printf ("EinkommensSteuerBerechnungsProgramm von Andreas Schmidberger"); printf ("\n\n\nBitte geben Sie ihr BRUTTO Einkommen ein-->"); scanf ("%lf",&brutto); if (brutto>steuer3) { prozent = 50; netto=prozent*brutto/100; printf("Der Nettobetrag betr„gt %lf Euro",&netto); } else if (brutto>=steuer2) { //unter 29 069 prozent = 41; netto=prozent*brutto/100; printf("Der Nettobetrag betr„gt %lf Euro",&netto); } else if (brutto<=steuer2) { //unter 14 534 prozent = 31; netto=prozent*brutto/100; printf ("Der Nettobetrag betr„gt %lf Euro",&netto); } else if (brutto<=steuer1) { //unter 3 640 netto = brutto; printf ("Der Nettobetrag betr„gt %lf Euro",&netto); } getch(); } |
Schon einmal überlegt, daß nur bei scanf der Ampersand Operator & (=address of) korrekt ist. Beim printf willst Du ja nicht die Adresse der Variablen netto ausdrucken, oder ? ... sondern deren Inhalt, laß das & bei den printf's weg.
Die ifs in weiterer Folge sind noch immer falsch. Schenk Dir das <=steuer_n und mach immer ein > steuer_n_minus_1 daraus. Sprich statt <=steuer2 musst Du auf >steuer1 vergleichen und zum Schluß gibt es nur mehr den else Block. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 19:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag