WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 02.12.2002, 15:32   #1
infectedmushroom
Jr. Member
 
Registriert seit: 02.12.2002
Alter: 37
Beiträge: 37


infectedmushroom eine Nachricht über ICQ schicken
Böse 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
Ich bin verzweifelt und habe schon alles ausprobiert

Danke im voraus INFECTED MUSHROOM
infectedmushroom ist offline   Mit Zitat antworten
Alt 02.12.2002, 15:40   #2
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard Re: Probleme mit Programmierhausübung in C

Zitat:
Original geschrieben von infectedmushroom

}
else
{
getch();
}
Du hast vergessen, die geschwungene Klammer zu öffnen.

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 02.12.2002, 15:54   #3
flinx
Inventar
 
Registriert seit: 08.04.2001
Beiträge: 3.101


Standard

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.
flinx ist offline   Mit Zitat antworten
Alt 02.12.2002, 16:07   #4
infectedmushroom
Jr. Member
 
Registriert seit: 02.12.2002
Alter: 37
Beiträge: 37


infectedmushroom eine Nachricht über ICQ schicken
Standard

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
infectedmushroom ist offline   Mit Zitat antworten
Alt 02.12.2002, 17:06   #5
rollipolli
Veteran
 
Registriert seit: 12.04.2001
Alter: 43
Beiträge: 330


rollipolli eine Nachricht über ICQ schicken
Standard

...der "strichpunkt" nach der if-bedingung ist nix...
deswegen "misplaced else"
rollipolli ist offline   Mit Zitat antworten
Alt 02.12.2002, 17:15   #6
infectedmushroom
Jr. Member
 
Registriert seit: 02.12.2002
Alter: 37
Beiträge: 37


infectedmushroom eine Nachricht über ICQ schicken
Standard

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


MfG Infected Mushroom
infectedmushroom ist offline   Mit Zitat antworten
Alt 02.12.2002, 17:34   #7
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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.
kikakater ist offline   Mit Zitat antworten
Alt 02.12.2002, 17:43   #8
infectedmushroom
Jr. Member
 
Registriert seit: 02.12.2002
Alter: 37
Beiträge: 37


infectedmushroom eine Nachricht über ICQ schicken
Standard

Das Funktioniert ABER

jetzt kommt egal welchen Wert ich eingebe 0.0000000 Euro heraus.

I gibs bald auf
infectedmushroom ist offline   Mit Zitat antworten
Alt 02.12.2002, 17:45   #9
infectedmushroom
Jr. Member
 
Registriert seit: 02.12.2002
Alter: 37
Beiträge: 37


infectedmushroom eine Nachricht über ICQ schicken
Standard

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

}
infectedmushroom ist offline   Mit Zitat antworten
Alt 02.12.2002, 18:02   #10
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

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.
kikakater ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:36 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag