program ellenorzes; uses crt,graph; const nmax=100; mezohossz=30; Type tszemely=record nev:string[mezohossz]; kor:integer; fizetes:real; end; tszemelyek=array[1..nmax] of tszemely; var szemelyek:tszemelyek; n:integer; i:integer; egesz:integer; valos:real; type Tablak=record balf,jobba:PointType; hatterszin:byte; end; const hibaablak:Tablak=( balf:(x:40;y:5); jobba:(x:60;y:9); hatterszin:red ); {meg lesz mas is...} Procedure ablaknyit (ablak:Tablak); begin {mentes megoldasa} {lehetne ugy is, hogy: "with ablak do" es kihaggyjuk az "ablakot" a tobbi helyen} window(ablak.balf.x,ablak.balf.y,ablak.jobba.x,ablak.jobba.y); textbackground(ablak.hatterszin); clrscr; end; Procedure ablakzar; begin window(1,1,80,25); {Ez az alapablak beallitasai} {visszamentes} end; procedure beolvas(var n:integer; var szemelyek:tszemelyek); var be:string; ok:integer; function joN:boolean; var jo:boolean; begin jo:=(ok=0) and (n in [1..nmax]); if not jo then begin ablaknyit(hibaablak); if (ok<>0) then write ('Nem egeszet irt') else if n>nmax then write ('100-nal nagyobb') else write ('1-nel kisebb'); readln;ablakzar; end; joN:=jo; end; begin repeat write ('A szemelyek szama:'); readln(be); val(be,n,ok); until joN; {(ok=0) and (n in [1..nmax]); fuggveny nelkul} {Ez utobbi lehetne: "and (n>=1) and (n<=nmax)" is} for i:=1 to n do begin repeat write(i,'. neve (max 30 karakter): '); readln(be); until (length(be)<=30) and (be<>''); szemelyek[i].nev:=be; repeat write(i,'. kora (egeszet 1-tol 150-ig): '); readln(be); val(be,egesz,ok); {A "val(a,b,c)" megnezi, "a" megfelel-e "b"-nek es ha igen, akkor "c" erteke igaz(1) lesz...} until (ok=0) and (egesz in [1..150]); szemelyek[i].kor:=egesz; repeat write(i,'. fizetese: '); readln(be); val(be,valos,ok); {A "val(a,b,c)" megnezi, "a" megfelel-e "b"-nek es ha igen, akkor "c" erteke igaz(1) lesz...} until (ok=0) and (valos>0); szemelyek[i].fizetes:=valos; end; end; begin beolvas(n,szemelyek); end.