unit keretprogi; {A beolvasast-beszurast megvalosito eljaras a Prog.Modszertan 4.felevenek 2. beadandojahoz: - az eljaras egyetlen parametere a ket egyseg hosszu szoveg, amit beolvastunk} {Szamoskozi Peter - 2001. apr. 5.} { a b c e f g ab ac be bf cg} {megkeres(szulo,holvan) beszur(gyerek,szulo,szabadmut)} interface const n=100; maxmutdb=100; {legfeljebb ennyi mutatonk lehet} type Tindex=integer; TmutIndex=integer; {Tertek=char;} tmutrec=array[1..n] of TmutIndex; trec=record ertek:char; m:tmutrec; end; Ttomb=array [1..n] of trec; Tvalaki=string[2]; var t:Ttomb; procedure beolvas(var sz:tvalaki); implementation procedure beolvas(var sz:tvalaki); function holvanertek(const szulo:char):Tindex; var i:Tindex; j:TmutIndex; holvan:Tindex; begin i:=0; repeat inc(i); if (T[i].ertek<>szulo) then begin {ha az erteke nem Ok...} j:=0; repeat {van-e ilyen mutatoja?} inc(j); until ( (T[ T[i].m[j] ].ertek=szulo) or ((j=n) and ( T[ T[i].m[j] ].ertek<>szulo)) ); end; if T[T[i].m[j]].ertek=szulo then holvan:=(i*10)+j else if T[i].ertek=szulo then holvan:=(i*10)+0 else holvan:=0; {nehezebb: matrix-koordinatat adjon vissza} until ( (holvan<>0) or ((i=n) and (holvan=0))); holvanertek:=holvan; end; procedure ElsoSzabadMutatoProc(const holvan:Tindex; var elsoszabadmut:TIndex); var i:integer; begin i:=0; repeat inc(i); until ( (T[holvan].m[i]=0) or ((i=maxMutDB) and (T[holvan].m[i]<>0)) ); if (T[holvan].m[i]=0) then elsoszabadmut:=i else elsoszabadmut:=0; end; procedure beszurgyerek(const holvan:Tindex; gyerek:Tvalaki; var tomb:Ttomb); var elsoszabadmutSV:tindex; gysSV:Tindex; ok:integer; begin elsoszabadmutatoProc(holvan,elsoszabadmutSV); if ((holvan<>0) and (elsoszabadmutSV<>0)) then begin val(gyerek,gyssv,ok); Tomb[(holvan div 10)].m[(holvan mod 10)]:=gyssv; end; end; begin {foprogram} repeat writeln('Kerem az akt. elemet: '); readln(sz); until (length(sz)=2); beszurgyerek(holvanertek(sz[1]),sz[2],t); end; end.