map
mail
down











08.09.01

 
    Turbo Pascal 7.0 - Notenberechnung mit Schleife  
 


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 (' ungengend '); note:=' ungengend '; 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 d”sig!');
     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!

 

 
         

up

Quelle: www.jaik.de/jaiksic.htm
last update: 08.09.01