%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Egy egyszeru kep tipus implementalasa. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Keszitette: Fazekas Agota es Pelikan Dora % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% kep = cluster is letrehoz,feltolt,elemei,atlag,kiir,kiirx,kiiry,kuszobindex tomb = array[int] % x, y: a kep merete % adat: a kep elemei egy vektorban rep = record[x,y:int,adat:tomb] letrehoz=proc() returns (cvt) return (rep${x:0,y:0,adat:tomb$new()}) end letrehoz feltolt=proc(k: cvt, s:stream) signals (rossz_szam(int)) w:string:="" sz:int k.x:=int$parse(stream$getl(s)) k.y:=int$parse(stream$getl(s)) while ~stream$empty(s) do c:char := stream$peekc(s) % nezi a kovetkezo karaktert if c <= '9' cand c >= '0' then w := w || string$c2s(c) %c-t stringge konvertalja, es osszefuzi % w-vel elseif c=' ' cor c='\n' then sz:=int$parse(w) if sz<0 cor sz>256 then signal rossz_szam(sz) % rossz_szam exceptiont valt ki else tomb$addh(k.adat,sz) % a w-t integerre alakitja, es end % elmenti a tomb megfelelo helyere w:="" else break end stream$getc(s) end end feltolt elemei=iter(k:cvt) yields(int) i:int:=tomb$low(k.adat) while true do yield(k.adat[i]) except when bounds: return end i:=i+1 end end elemei atlag=proc(k:kep) returns(int) sum:int:=0 for e:int in kep$elemei(k) do sum:=sum+e end return(sum/tomb$size(down(k).adat)) end atlag kiirx=proc(s:stream,k:cvt) stream$putl(s,int$unparse(k!get_x)) end kiirx kiiry=proc(s:stream,k:cvt) stream$putl(s,int$unparse(k!get_y)) end kiiry kiir=proc(s:stream,k:cvt) i:int:=1 j:int:=1 while i<=k.x do while j<=k.y do stream$puts(s,int$unparse(k.adat[(i-1)*k.y+j])||" ") j:=j+1 end stream$putl(s,"") i:=i+1 j:=1 end except when bounds: end end kiir kuszobindex=proc(k:cvt,kuszob:int) i:int:=tomb$low(k.adat) while true do if (k.adat[i]