WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Probleme mit Programmierhausübung in C (http://www.wcm.at/forum/showthread.php?t=79069)

infectedmushroom 02.12.2002 15:32

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

käptn 02.12.2002 15:40

Re: Probleme mit Programmierhausübung in C
 
Zitat:

Original geschrieben von infectedmushroom

}
else
{
getch();
}

Du hast vergessen, die geschwungene Klammer zu öffnen.

~

flinx 02.12.2002 15:54

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. ;)

infectedmushroom 02.12.2002 16:07

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

rollipolli 02.12.2002 17:06

...der "strichpunkt" nach der if-bedingung ist nix...
deswegen "misplaced else"

infectedmushroom 02.12.2002 17:15

Danke es funktioniert
Aber hat irgendwer eine ahnung warum immer -34 herauskommt (egal nach welcher eingabe) :confused:


MfG Infected Mushroom

kikakater 02.12.2002 17:34

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.

infectedmushroom 02.12.2002 17:43

Das Funktioniert ABER

jetzt kommt egal welchen Wert ich eingebe 0.0000000 Euro heraus.

I gibs bald auf :heul:

infectedmushroom 02.12.2002 17:45

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();

}

kikakater 02.12.2002 18:02

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