TP function

MCCCXXXVII

Cadet 2nd Year
Registriert
Aug. 2006
Beiträge
20
wäre nett, wenn mir jemand sagen könnte wo der fehler liegt.

function Notendurchschnitt (a,b,c,d,e : integer) : string;
Begin
erg := a+b+c+d+e;
erg := erg/5;
CASE erg of
1 <= and <1.5 : Begin Notendurchschnitt := ('sehr gut'); END;
1.5 <= and <2.5 : Begin Notendurchschnitt := ('gut'); END;
2.5 <= and <3.5 : Begin Notendurchschnitt := ('befriedigend'); END;
3.5 <= and <4.5 : Begin Notendurchschnitt := ('ausreichend'); END;
4.5 <= and <5.5 : Begin Notendurchschnitt := ('mangelhaft'); END;
5.5 <= and <6 : Begin Notendurchschnitt := ('ungengend'); END;
END;
END;
 
Mein Pascal ist lange her, aber das
Code:
1 <= and <1.5 : Begin Notendurchschnitt := ('sehr gut'); END;
sieht seltsam aus.

Hier findest Du eine Beschreibung der case Syntax:
http://sansibar.oec.uni-osnabrueck...._UE_Rieger_08.pdf#search="case pascal syntax"

Ich weiss nicht ob sie vollständig ist, aber Dein Konstrukt mit den < und <= Operatoren ist dort nicht aufgeführt.
Notfalls formulier es doch in IF Anweisungen um.

Und prinzipiell wäre eine Fehlermeldung des Compilers auch sehr hilfreich. So muss man nämlich raten.
Ausserdem liefert Deine Funktion ein undefiniertes Ergebnis zurück, wenn die Funktion Werte über 6 geliefert bekommt.
Das sollte noch abgefangen werden.

MfG

Arnd
 
Zuletzt bearbeitet:
If darf ich nicht benutzen ;(
und zum letzten punkt so weit bin ich noch nicht.

ok der Fehler "Ordinal expression expected" und der cursor springt zum f in "CASE erg of"
ich denke Hier liegt der fehler "1 <= and <1.5" bin mir nur nicht sicher war halt ne aufgabe für zu hause
 
Danke alle problem ist gelöst. Ich sollte das doch mit if then machen. Das menu sollte mit case of erstellt werden.
 
Das mit der .. Syntax macht ein Problem bei float Zahlen. Was ist mit 1,51 oder 1.500001?
Von daher ist eine IF Anweisung die bessere Lösung.

MfG

Arnd
 
Zurück
Oben