{$f+ a saj t elj r sok, fggv‚nyek kezel‚s‚hez ig‚nyli a TURBO PASCAL} Const MaxDb = 6; Type MenuPont = Record kerdes: String; sorsz : Byte; tevek : Procedure; segit : Word; End; Menu = Record cim: String; db : Byte; am : Array [1..MaxDb] of MenuPont; bfx,bfy: Byte; End; Procedure Varakozas; Forward; Procedure Ures; Forward; Procedure AblakRajzolas(bfx,bfy,hossz,szel: Byte); Forward; Procedure Menuzes(m: Menu); Forward; Procedure Vege; Forward; { Mendeklar ci¢: } Procedure Menu1; Forward; {Parm‚termen} Procedure Menu2; Forward; {Rendez‚sek menje} Procedure Menu3; Forward; {F”lt”lt‚sek menje} Procedure Menu1_1; Forward; {Az egyes rendez‚seket h¡v¢ elj r s} Procedure Menu1_2; Forward; {Az egyes rendez‚seket h¡v¢ elj r s} Procedure Menu1_3; Forward; {Az egyes rendez‚seket h¡v¢ elj r s} Procedure Menu1_4; Forward; {Az egyes rendez‚seket h¡v¢ elj r s} Procedure Menu1_5; Forward; {Az egyes rendez‚seket h¡v¢ elj r s} Procedure FeltoltNovekedve; Forward; Procedure FeltoltCsokkenve; Forward; Procedure FeltoltAzonossal; Forward; Procedure FeltoltVeletlennel; Forward; Procedure FeltoltMajdnemRendezve; Forward; { Seg‚d glob lis elj r s: } Procedure TombKiir(cim: String); Forward; { A megirand¢ rendez‚sek: } Procedure EgyszeruCseres; Forward; Procedure MinimumKivalasztasos; Forward; Procedure Buborek; Forward; Procedure JavitottBuborek; Forward; Procedure Beilleszteses; Forward; { Menle¡r¢t bla deklar ci¢ja: } Const FoMenu : Menu=(cim: 'F“men'; db : 4; am : ((kerdes:'Param‚termegad s';sorsz:1;tevek:Menu1;segit:1), (kerdes:'Felt”lt‚s';sorsz:1;tevek:Menu3;segit:3), (kerdes:'Rendez‚si m¢dszer';sorsz:1;tevek:Menu2;segit:2), (kerdes:'V‚ge'; sorsz:1;tevek:Vege;segit:99), (kerdes:'';sorsz:0;tevek:Ures;segit:0), (kerdes:'';sorsz:0;tevek:Ures;segit:0)); bfx: 10; bfy: 5); Al1Menu: Menu=(cim: 'Rendez‚sek'; db : 6; am : ((kerdes:'Egyszer cser‚s';sorsz:1;tevek:Menu1_1;segit:4), (kerdes:'Minimumkiv laszt sos';sorsz:1;tevek:Menu1_2;segit:5), (kerdes:'Bubor‚k';sorsz:1;tevek:Menu1_3;segit:6), (kerdes:'Jav¡tott bubor‚k';sorsz:1;tevek:Menu1_4;segit:7), (kerdes:'Beilleszt‚ses';sorsz:3;tevek:Menu1_5;segit:8), (kerdes:'V‚ge'; sorsz:1;tevek:Vege;segit:99)); bfx: 10; bfy: 5); Al2Menu: Menu=(cim: 'F”lt”lt‚sek'; db : 6; am : ((kerdes:'N”veked“en';sorsz:1;tevek:FeltoltNovekedve;segit:7), (kerdes:'Cs”kken“en';sorsz:1;tevek:FeltoltCsokkenve;segit:8), (kerdes:'Azonosakkal';sorsz:1;tevek:FeltoltAzonossal;segit:9), (kerdes:'V‚letlennel';sorsz:3;tevek:FeltoltVeletlennel;segit:10), (kerdes:'Majdnem rendezve';sorsz:1;tevek:FeltoltMajdnemRendezve;segit:11), (kerdes:'V‚ge'; sorsz:1;tevek:Vege;segit:99)); bfx: 10; bfy: 5); { Mentev‚kenys‚gek deklar ci¢ja: } Procedure Menu1; Var HolX: Integer; Begin AblakRajzolas(1,1,24,79); Repeat GotoXY(20,12); Write('T”mbm‚ret (100..',MaxN,'):'); HolX:=WhereX; Write(' '); GotoXY(HolX,12); Readln(ElemSzam) Until (ElemSzam>=100) and (ElemSzam<=MaxN); ClrScr; End; {1.Men} Procedure Menu2; Begin AblakRajzolas(1,1,24,79); Menuzes(Al1Menu); End; {2.Men} Procedure Menu3; Begin AblakRajzolas(1,1,24,79); GotoXY(38,12); Menuzes(Al2Menu); End; {3.Men} Procedure Menu1_1; Begin AblakRajzolas(1,1,24,79); GotoXY(28,12); Writeln('Egyszer cser‚s rendez‚s'); Window(2,2,78,23); {Az akt¡v ablakterlet} EgyszeruCseres; Varakozas End; {1.1.Men} Procedure Menu1_2; Begin AblakRajzolas(1,1,24,79); GotoXY(26,12); Writeln('Minimumkiv laszt sos rendez‚s'); Window(2,2,78,23); {Az akt¡v ablakterlet} MinimumKivalasztasos; Varakozas End; {1.2.Men} Procedure Menu1_3; Begin AblakRajzolas(1,1,24,79); GotoXY(36,12); Writeln('Bubor‚k'); Window(2,2,78,23); {Az akt¡v ablakterlet} Buborek; Varakozas End; {1.3.Men} Procedure Menu1_4; Begin AblakRajzolas(1,1,24,79); GotoXY(32,12); Writeln('Jav¡tott bubor‚k'); Window(2,2,78,23); {Az akt¡v ablakterlet} JavitottBuborek; Varakozas End; {1.4.Men} Procedure Menu1_5; Begin AblakRajzolas(1,1,24,79); GotoXY(36,12); Writeln('Beilleszt‚ses'); Window(2,2,78,23); {Az akt¡v ablakterlet} Beilleszteses; Varakozas End; {1.5.Men} Procedure FeltoltNovekedve; Var i: Integer; Begin AblakRajzolas(1,1,24,79); s[1]:=Random(ElemSzam); For i:=2 to ElemSzam do Begin s[i]:=s[i-1]+Random(3) End; r:=s; TombKiir('F”lt”lt‚s n”vekedve'); Varakozas End; {FeltoltNovekedve} Procedure FeltoltCsokkenve; Var i: Integer; Begin AblakRajzolas(1,1,24,79); s[1]:=Random(ElemSzam); For i:=2 to ElemSzam do Begin s[i]:=s[i-1]-Random(3) End; r:=s; TombKiir('F”lt”lt‚s cs”kkenve'); Varakozas End; {FeltoltCsokkenve} Procedure FeltoltAzonossal; Var i: Integer; Begin AblakRajzolas(1,1,24,79); s[1]:=Random(ElemSzam); For i:=2 to ElemSzam do Begin s[i]:=s[i-1] End; r:=s; TombKiir('F”lt”lt‚s azonosakkal'); Varakozas End; {FeltoltAzonossal} Procedure FeltoltVeletlennel; Var i: Integer; Begin AblakRajzolas(1,1,24,79); For i:=1 to ElemSzam do Begin s[i]:=Random(ElemSzam) End; r:=s; TombKiir('F”lt”lt‚s v‚letlenekkel'); Varakozas End; {FeltoltVeletlennel} Procedure FeltoltMajdnemRendezve; Var i,j,k: Integer; seged: Elem; Begin AblakRajzolas(1,1,24,79); s[1]:=Random(ElemSzam); For i:=2 to ElemSzam do Begin s[i]:=s[i-1]+Random(3) End; For i:=1 to ElemSzam Div 10 do Begin j:=Random(ElemSzam); Repeat k:=Random(ElemSzam) Until k<>j; seged:=s[j]; s[j]:=s[k]; s[k]:=seged; End; r:=s; TombKiir('F”lt”lt‚s majdnem rendezve'); Varakozas End; {FeltoltMajdnemRendezve} { Mendeklar ci¢ v‚ge } Procedure TombKiir(cim: String); Var i: Integer; Begin Window(1,1,80,25); {Az akt¡v ablakterlet} GotoXY(((80-length(cim)) Div 2)+2,1); HighVideo; Write(cim); Lowvideo; Window(2,2,78,23); {Az akt¡v ablakterlet} For i:=1 to ElemSzam do Begin NormVideo; Write(i:5,':'); HighVideo; Write(r[i]:5); End; End; {TombKiir} Procedure Varakozas; Var c: Char; Begin Window(1,1,80,25); {Az akt¡v ablakterlet} Repeat GotoXY(40,24); Write('|'); Delay(100); GotoXY(40,24); Write('/'); Delay(100); GotoXY(40,24); Write('-'); Delay(100); GotoXY(40,24); Write('\'); Delay(100); Until KeyPressed; c:=ReadKey; ClrScr; End; {V rakoz s} Procedure Ures; {Az res menpontokhoz tartoz¢ tev‚kenys‚g} Begin End; {res} Procedure Vege; Begin AblakRajzolas(1,1,24,79); GotoXY(38,12); Writeln('V‚ge'); GotoXY(1,24); Delay(1000); ClrScr; End; {V‚ge} Procedure AblakRajzolas(bfx,bfy,hossz,szel: Byte); Var i: Byte; Begin Window(bfx,bfy,bfx+szel,bfy+hossz); ClrScr; For i:=1 to szel do Begin GotoXY(i,1); Write('±'); GotoXY(i,hossz); Write('±'); End; For i:=2 to hossz do Begin GotoXY(1,i); Write('±'); GotoXY(szel,i); Write('±'); End; End; {AblakRajzol s} Procedure Menuzes(m: Menu); Var melyik, szel : Byte; Procedure Help (a : Word); Begin Ablakrajzolas(30,10,13,50); GotoXY(5,5); Write(a); Varakozas; Window(m.bfx,m.bfy,m.bfx+szel+2,m.bfy+m.db+2); End; Procedure MenuKiiras(m: Menu); Var i: Byte; Procedure KepernyoKimentes; Begin End; {KepernyoKimentes} Procedure KepernyoVisszamentes; Begin End; {KepernyoVisszamentes} Function MaxSzel(m: Menu): Byte; Var i,j: Byte; Begin j:=Length(m.cim); For i:=1 to m.db do Begin If jm.db then i:=1; Highvideo; GotoXY(2,i+1); Write(m.am[i].kerdes); Lowvideo; c:=#0; {speci lis jel} End; #72 : Begin GotoXY(2,i+1); Write(m.am[i].kerdes); GotoXY(m.am[i].sorsz+1,i+1); HighVideo; Write(m.am[i].kerdes[m.am[i].sorsz]); Lowvideo; i:=i-1; If i=0 then i:=m.db; Highvideo; GotoXY(2,i+1); Write(m.am[i].kerdes); Lowvideo; c:=#0; {speci lis jel} End; #59 : help(m.am[i].segit); End; {case} End; #13 : eleg:=true; #27 : Begin i:=m.db; eleg:=True; End; End; {case}; If not eleg and (Upcase(c) in betuk) then Begin i:=1; While Upcase(c)<>Upcase(m.am[i].kerdes[m.am[i].sorsz]) do Inc(i); eleg:=True; End; Until eleg; MenuValasztas:=i; End; {MenV laszt s} Begin {Menz‚s} ClrScr; Repeat MenuKiiras(m); melyik:=MenuValasztas(m); m.am[melyik].tevek; Until melyik=m.db; End; {Menz‚s} { Begin Menuzes(FoMenu); End. }