![]() |
![]() |
|
|
|||||||
| Programmierung Rat & Tat für Programmierer |
![]() |
|
|
Themen-Optionen | Ansicht |
|
|
#1 |
|
Jr. Member
![]() |
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 ![]() Ich bin verzweifelt und habe schon alles ausprobiert Danke im voraus INFECTED MUSHROOM |
|
|
|
|
|
#2 | |
|
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
Zitat:
~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
|
|
|
|
|
|
#3 |
|
Inventar
![]() Registriert seit: 08.04.2001
Beiträge: 3.101
|
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.
![]() |
|
|
|
|
|
#4 |
|
Jr. Member
![]() |
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 |
|
|
|
|
|
#5 |
|
Veteran
![]() |
...der "strichpunkt" nach der if-bedingung ist nix...
deswegen "misplaced else" |
|
|
|
|
|
#6 |
|
Jr. Member
![]() |
Danke es funktioniert
Aber hat irgendwer eine ahnung warum immer -34 herauskommt (egal nach welcher eingabe) MfG Infected Mushroom |
|
|
|
|
|
#7 |
|
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
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
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. |
|
|
|
|
|
#8 |
|
Jr. Member
![]() |
Das Funktioniert ABER
jetzt kommt egal welchen Wert ich eingebe 0.0000000 Euro heraus. I gibs bald auf ![]() |
|
|
|
|
|
#9 |
|
Jr. Member
![]() |
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(); } |
|
|
|
|
|
#10 |
|
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
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. |
|
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|