Hi,
ich habe mir mal erlaubt, in dem Quelltext einige Zeilen rauszunehmen, die für diese Probelmbetrachtung nicht wichtig sind.
Des Rätsels Lösung heißt eigentlich, das die Prozedur P_Menue immer wieder aufgerufen wird, sobald diese beendet wurde.
Den Abbruch des Programms erwirkst du ja mit halt und dann ist alles vorbei.
Test it
Delphi-Quellcode:
program Stundenplan;
{$APPTYPE CONSOLE}
uses
SysUtils;
var Tag: ARRAY[1..5,1..8] OF String;
index:integer;
A,B,E,V_Menue,j,n,V_Lizenz:Char;
Anzleer,Anz:Byte;
Text:String;
s:String;
//001------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Stunden_einlesen;
var
index:integer;
begin
writeln(' ');
// hier sind ein paar Zeilen ausgelassen worden weil nicht wichtig ;-)
writeln(' ');
writeln(' Bitte gebe hoechtens 10 Zeichen ein! ');
writeln(' Nach jeder Eingabe ENTER druecken! ');
writeln(' ');
// hier sind ein paar Zeilen ausgelassen worden weil nicht wichtig ;-)
writeln(' ');
for index:= 1 to 8 do
begin
writeln(' --- Faecher fuer Montag --- ');
writeln(' ',index,' Stunde eingeben: ');
readln( Tag[ 1, index ] );
end;
// hier sind ein paar Zeilen ausgelassen worden weil nicht wichtig ;-)
for index:= 1 to 8 do
begin
writeln(' --- Faecher fuer Freitag --- ');
writeln(' ',index,' Stunde eingeben: ');
readln( Tag[ 5, index ] );
end;
end;
//------------------------Spalte------------------------------------------------
procedure P_Spalte(Text:String);
var
i : Byte;
begin
for i := 0 to ( 9-( length( Tag[ 1, 1 ] ) ) ) do
write( ' ' );
end;
//------------------------------------------------------------------------------
//001------------------------Prozedur----------------Ende----------------------------------
//002------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Stunden_ausgeben;
var
i: Integer;
begin
//1. Zeile
write(' ');write(#218);for i:=1 to 50 do write(#196);writeln(#191);
//2. Zeile
write(' ');write(#179);write(' STUNDENPLAN:');for i:=1 to 37 do write(' ');
writeln(#179);
//3. Zeile
write(' ');write(#179);for i:=1 to 14 do write(' ');write(#218);
for i:=1 to 10 do write(#196);write(#194);for i:=1 to 10 do write(#196);
write(#194);for i:=1 to 10 do write(#196);write(#194);
for i:=1 to 10 do write(#196);write(#194);for i:=1 to 10 do write(#196);
writeln(#191);
//4. Zeile
write(' ');write(#179);for i:=1 to 14 do write(' ');write(#179);
write('Montag');write(' ');write(#179);write('Dienstag');
write(' ');write(#179);write('Mittwoch');write(' ');write(#179);
write('Donnerstag');write('');write(#179);write('Freitag');
write(' ');writeln(#179);
//5. Zeile
write(' ');write(#179);for i:=1 to 14 do write(' ');write(#195);
for i := 1 to 54 do write(#220);writeln(#180);
//6. Zeile
write(' ');write(#179);for i:=1 to 14 do write(' ');write(#195);
for i:=1 to 10 do write(#196);write(#197);for i:=1 to 10 do write(#196);
write(#197);for i:=1 to 10 do write(#196);write(#197);
for i:=1 to 10 do write(#196);write(#197);for i:=1 to 10 do write(#196);
writeln(#180);
//7. Zeile
write(' ');write(#179);write(' 1. Stunde:');write(' ');write(#179);
write(Tag[1,1]);P_Spalte('');write(#179);
readln;
end;
//002------------------------Prozedur----------------Ende----------------------------------
//004------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Menue;
begin
writeln(' ');
writeln('XXXX Stundenplan - Menue XXXX');
writeln('XXXX ______________________ XXXX');
writeln('XXXX XXXX');
writeln('XXXX XXXX');
writeln('XXXX E = Stunden eingeben XXXX');
writeln('XXXX A = Stunden anzeigen XXXX');
writeln('XXXX XXXX');
writeln('XXXX B = Programm beenden XXXX');
writeln('XXXX ... was willst du tun? Kennziffer und ENTER druecken ... XXXX');
readln (V_Menue);
Case V_Menue of
'E': P_Stunden_einlesen;
'A': P_Stunden_ausgeben;
'B': halt;
end;
end;
//004------------------------Prozedur----------------Ende----------------------------------
//003------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Lizenz;
begin
writeln(' ');
writeln('XXXX [j] oder [n] plus ENTER eingeben ... XXXX');
readln (V_Lizenz);
Case V_Lizenz of
'j' : begin end;
'n' : halt;
end;
end;
//003------------------------Prozedur----------------Ende----------------------------------
//005------------------------Hauptprogramm-----------Anfang--------------------------------
begin
P_Lizenz;
repeat
P_Menue;
until 1 = 0; // häh??? na klar, weil der Abbruch des Programms hart in P_Menue erfolgt ;-)
readln; // das braucht hier kein Mensch
end.
//005------------------------Hauptprogramm-----------Ende----------------------------------
cu
Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)