|
Standardprogramm, die Aufgabenstellung findet man so oder ähnlich
in einigen Schulbüchern.
Aus der Eingabe der maximalen Punktzahl und der erreichten Punktzahl
wird die erreichte Prozentzahl, die Note und die Notenpunkte (0-15)
errechnet.
Der obere Quelltext beinhaltet eine kopfgesteuerte Schleife, darunter
ist das Hauptprogramm in zwei Varianten (fußgesteuert und
ohne Schleife) aufgeführt.
program noten_1;
uses crt;
var max, punkte, notpkt: integer;
prozent: longint;
note: string;
abfrag: integer;
procedure punkteeingabe;
begin
writeln;
write ('Geben Sie die erreichte Punktzahl ein ');
readln (punkte);
end;
procedure notenpunkte;
begin
prozent:=round(punkte*100/max);
(* write (prozent);*)
case prozent of
0..25: begin writeln (' 0 Punkte '); notpkt:=0; end;
26..30: begin writeln (' 1 Punkt '); notpkt:=1; end;
31..35: begin writeln (' 2 Punkte '); notpkt:=2; end;
36..40: begin writeln (' 3 Punkte '); notpkt:=3; end;
41..45: begin writeln (' 4 Punkte '); notpkt:=4; end;
46..50: begin writeln (' 5 Punkte '); notpkt:=5; end;
51..55: begin writeln (' 6 Punkte '); notpkt:=6; end;
56..60: begin writeln (' 7 Punkte '); notpkt:=7; end;
61..65: begin writeln (' 8 Punkte '); notpkt:=8; end;
66..70: begin writeln (' 9 Punkte '); notpkt:=9; end;
71..75: begin writeln (' 10 Punkte'); notpkt:=10; end;
76..80: begin writeln (' 11 Punkte'); notpkt:=11; end;
81..85: begin writeln (' 12 Punkte'); notpkt:=12; end;
86..90: begin writeln (' 13 Punkte'); notpkt:=13; end;
91..95: begin writeln (' 14 Punkte'); notpkt:=14; end;
96..100:begin writeln (' 15 Punkte'); notpkt:=15; end;
else writeln ('Dumpfbacke');
end; (*of case*)
end; (*of proc*)
procedure noten;
begin
case notpkt of
0: begin writeln (' ungengend '); note:=' ungengend '; end;
1..3: begin writeln (' mangelhaft '); note:=' mangelhaft '; end;
4..6: begin writeln (' ausreichend '); note:=' ausreichend '; end;
7..9: begin writeln (' befriedigend '); note:=' befriedigend '; end;
10..12: begin writeln (' gut '); note:=' gut '; end;
13..15: begin writeln (' sehr gut '); note:=' sehr gut '; end;
else writeln ('Immer noch dsig!');
end;
end;
procedure ausgabe;
begin
writeln ('Und jetzt noch mal zusammen:');
delay(1000);
clrscr;
writeln ('Die Maximalpunktzahl ist ',max:4,' Punkte');
writeln ('Sie haben davon erreicht ',punkte:4,' Punkte');
delay(500);
writeln ('Das sind ',prozent:4,' Prozent');
writeln ('Diese entsprechen ',notpkt:4,' Notenpunkten');
delay(500);
writeln ('Die Note ist also ',note);
delay(500);
writeln ('Kondoliere - gratuliere - suchen Sie sich was aus!');
end;
Begin
clrscr;
window (3,4,70,20);
writeln ('Notenberechnungsprogramm!');
write ('Geben Sie die Maximalpunktzahl ein ');
readln (max);
abfrag:=1;
while abfrag <> 0 do
begin
clrscr;
punkteeingabe;
Notenpunkte;
Noten;
Ausgabe;
delay(1000);
writeln;
writeln ('Wollen Sie weitere Punktzahlen eingeben? (Ja:1) (Ende:0)');
read (abfrag);
end;
write ('Ok, dann ist jetzt Schluss. [Return]');
readln;
End.
Als Variante das Hauptprogramm mit fußgesteuerter Schleife:
Begin
clrscr;
window (3,4,70,20);
writeln ('Notenberechnungsprogramm!');
write ('Geben Sie die Maximalpunktzahl ein ');
readln (max);
repeat
begin
clrscr;
punkteeingabe;
Notenpunkte;
Noten;
Ausgabe;
delay(1000);
writeln;
writeln ('Wollen Sie weitere Punktzahlen eingeben? (Ja:1) (Ende:0)');
read (abfrag);
end;
until abfrag=0;
End.
Und so sieht es ohne Schleife aus:
Begin
clrscr;
window (3,4,70,20);
writeln ('Notenberechnungsprogramm!');
write ('Geben Sie die Maximalpunktzahl ein ');
readln (max);
punkteeingabe;
Notenpunkte;
Noten;
Ausgabe;
readln;
End.
|
|
Besser |
Wenn Sie eine bessere Lösung haben oder eine
Fehler finden, mailen Sie
mir! |
|
|