![]() |
![]() |
|
![]() |
![]() |
|
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) | |
|
|