WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   C: Problem bei Notendurchschnittsberechnung (http://www.wcm.at/forum/showthread.php?t=74906)

pirate man 27.10.2002 11:43

C: Problem bei Notendurchschnittsberechnung
 
wir sollen über die ferien in c ein programm schreiben, das den notendurchschnitt von beliebig vielen noten ausrechnet
so soll es ausschaun:
benutzer gibt note ein - sollte die eingabe nicht im bereich 1-5 sein, kommt eine fehlermeldung und die aufforderung zu einer erneuten eingabe
wenn er dann e drückt, wird der notendurchschnitt ausgerechnet - will er eine weitere note eingeben, soll er eine beliebige andere taste drücken
jetzt hab ich folgendes problem:
egal welche zahl ich eingebe, es kommt immer die fehlermeldung, dass die zahl falsch is
ich hab das file angehängt und hoffe, dass ihr mir helfen könnt

pong 27.10.2002 11:49

das scanf pfuscht dir leider rein, da es bei der eingabe cr und lf auch mitnimmt und ein wert jenseits von gut und böse ins int geschrieben wird

abhilfe wäre ein array aus mind. 3 zeichen und das 1te weisst du dann deinem int zu (musst noch schaun obs ne typenkonversion besteht und im bedarfsfall 0x30h abziehen)

pong

pirate man 27.10.2002 12:09

wie schaut aus mit getchar()? geht das? oder nur bei buchstaben?

future 27.10.2002 12:14

if(note<'1' || note>'5')


Wenn du integer mit char vergleichst, wirst du nie zu einem sinnvollen ergebnis kommen ;)


besser

if(note<1 || note>5)

future 27.10.2002 12:17

if(note<'1' || note>'5')

behandelt der compiler wie

if(note<49 || note>53)


das entspricht nicht dem österreichischen Schulnotensystem :D

pirate man 27.10.2002 12:27

ups :)
jetzt gehts, da wär aber noch ein problem
wenn man e drückt, um den durchschnitt anzeigen zu lassen, wird das programm geschlossen :(

future 27.10.2002 12:37

Zitat:

Original geschrieben von pirate man
ups :)
jetzt gehts, da wär aber noch ein problem
wenn man e drückt, um den durchschnitt anzeigen zu lassen, wird das programm geschlossen :(



was hast überhaupt geändert wars das was ich gepostet habe :confused:

printf("%d",durchschnitt);

durchschnitt ist aber eine float! %d aber nur für integer. vielleicht mag er das nicht?

pirate man 27.10.2002 12:53

ich hab die apostrophe in der if-abfrage weggegeben
was steht für float?

future 27.10.2002 13:01

Zitat:

Original geschrieben von pirate man
ich hab die apostrophe in der if-abfrage weggegeben
was steht für float?


sorry, aber ich habe C schon 10 Jahre nicht mehr angerührt ;)


probiers mal mit "%4.2f"

pirate man 27.10.2002 13:03

hab %f statt %d geschrieben, geht auch nicht
es kommen übrigens 2 warnings beim kompilieren
und zwar bei gesamt=gesamt+note und bei i++
die warnings lauten: possbile use of variable (gesamt bzw. i) before definition

future 27.10.2002 13:08

Zitat:

Original geschrieben von pirate man
hab %f statt %d geschrieben, geht auch nicht
es kommen übrigens 2 warnings beim kompilieren
und zwar bei gesamt=gesamt+note und bei i++
die warnings lauten: possbile use of variable (gesamt bzw. i) before definition


probier mal

int gesamt=0,note,i=0;

statt

int gesamt,note,i;



btw - das "Schnitzel" ruft ;)

pirate man 27.10.2002 13:12

oke, die 2 warnings sind jetzt weg
aber is wenn ich e drück wird das programm noch immer beendet :(
ich häng nochmal das aktuelle file an

future 27.10.2002 13:20

Zitat:

Original geschrieben von pirate man
oke, die 2 warnings sind jetzt weg
aber is wenn ich e drück wird das programm noch immer beendet :(
ich häng nochmal das aktuelle file an


Naja, jetzt wird es aber schwierig über Ferndiagnose. Du musst irgendwie festellen, welchen Befehl er noch ausführt.

Schließlich soll das Programm ja beendet werden? Vielleicht passiert die Ausgabe so schnell, dass man sie nicht sieht? Bau ganz zum Schluss halt noch ein "Zum Beenden des Programm drücken sie bitte eine Taste" + ein getch().


usw.


Mahzeit :)

wizo 27.10.2002 13:22

also ich habs getestet funktioniert eh einwandfrei so weit das halt möglich ist
notendurchschnitt wird ausgegeben

wizo 27.10.2002 13:24

aber hau das scanf raus
das ist ne große fehlerquelle


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:12 Uhr.

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