Uses Bux,Dos; Procedure Reszveny_idoszerusites; Type modosito_rekord = record modtip : Char; adat : TReszveny; end; Var mod_file : file of modosito_rekord; mod_rek : modosito_rekord; f : file; kimenet : text; i : TReszvenySorszam; s : TReszvenyNev; Begin If ReszvenyNyit then Begin Assign(mod_file,'reszveny.mod'); Reset(mod_file); Assign(kimenet,'reszveny.uj'); ReWrite(kimenet); WriteLn(kimenet,'0 0'); i:=1; s:=MiANevedAranyom(1); If not EOF(mod_file) then Read(mod_file,mod_rek) else mod_rek.adat.sorszam:=0; While (s>'') and not EOF(mod_file) do Begin If mod_rek.adat.sorszam=i then Begin {mod_rek.modtip-et meg lehetne vizsg lni} s:=mod_rek.adat.nev; read(mod_file,mod_rek); End; Write(kimenet,i); WriteLn(kimenet,' '+s); i:=i+1; s:=MiANevedAranyom(i); End; While s>'' do Begin Write(kimenet,i); WriteLn(kimenet,' '+s); i:=i+1; s:=MiANevedAranyom(i); End; Close(mod_file); Close(kimenet); ReszvenyZar; Assign(f,'reszveny.txt'); erase(f); rename(kimenet,'reszveny.txt'); End; End; Procedure Munka_idoszerusites(n : TNapSzam); {file-felep: No,kezdoar,zaroar,legolcsobb eladas, legdragabb eladas, atlagos eladas)} var sorszam:longint; {a munkafileban hanyadik sornal vagyunk} kezdoar,zaroar:real; minelad,maxelad,atlagelad:real; tempfile:text; {eloszor ide modositjuk az adatokat} modfile:text; {BENCE: a mod_rekord-al ossze kellene vhogy hozni...} munkafile:text; {ide kerul - vegul - a modositott file} pufferfile:text; {ideiglenesen! ide kerulnek a beszurando reszvenyek} s:string; {a file-nevek miatt} mf:record sorszam:integer; kezdoar:real; zaroar:real; minelad:real; maxelad:real; atlagelad:real; end; modNo:integer; {csak a lepteteshez} modTip:char; {mit csinaljunk a beerkezo adatokkal} const elvalaszto=';'; sorvege='#10#13'; procedure olvas(var mit:real; var honnan:text); {!-Me'g ez sem teljesen biztonsagos-} var c:char; s:string; ok:integer; begin s:=''; repeat read(honnan,c); s:=s+c; until (c=elvalaszto); val(s,mit,ok); end; procedure modosit; begin write(tempfile,sorszam); write(tempfile,elvalaszto); while not(EOLN(modfile)) do begin olvas(kezdoar,modfile); write(tempfile,kezdoar); write(tempfile,elvalaszto); if mf.kezdoar=0 then zaroar:=0 else olvas(zaroar,modfile); write(tempfile,zaroar); write(tempfile,elvalaszto); write(tempfile,elvalaszto); olvas(minelad,modfile); write(tempfile,minelad); write(tempfile,elvalaszto); olvas(maxelad,modfile); write(tempfile,maxelad); write(tempfile,elvalaszto); olvas(atlagelad,modfile); write(tempfile,atlagelad); write(tempfile,elvalaszto); end; write(tempfile,sorvege); end; {-a modosito aleljaras vege-} procedure beszur; var sv1,sv2:integer; {lenyegeben mutatok} i:integer; semmi:string; begin sv1:=mf.sorszam; close(munkafile); reset(munkafile); sv2:=0; while not(EOF(munkafile)) do begin {-sorszamlalas-} readln(munkafile,semmi); inc(sv2); end; close(munkafile); write(pufferfile,sv2); write(pufferfile,elvalaszto); while not(EOLN(modfile)) do begin olvas(adat,modfile-bol); kiir(adat,pufferfile); end; write(pufferfile,sorvege); reset(munka); for i:=1 to ((sv1)-1) do begin readln(munkafile,semmi); end; end; {-a beszur aleljaras vege-} Procedure kizar; {Ha egy reszveny kitiltanak a tozsderol} begin kiir(sorszam,tempfile); while not(sorvege(modfile)); olvas(kezdoar,modfile); write(modfile,kezdoar); writeln(mopdfile,elvalaszto); zaroar:=0; kiir(zaroar,tempfile); olvas(min-elad,modfile); kiir(min-elad,tempfile); olvas(max-elad,modfile); kiir(max-elad,tempfile); olvas(atlag-elad,modfile); kiir(atlag-elad,tempfile); end; end; {-a kizar aleljaras vege-} Procedure bekenhagy; begin kiir(sorszam,tempfile); while not(EOL(munkafile)); olvas(kezdoar,munkafile); write(munkafile,kezdoar); write(munkafile,elvalaszto); olvas(zaroar,munkafile); write(munkafile,zaroar); write(munkafile,elvalaszto); olvas(min-elad,modfile); write(tempfile,min-elad); write(munkafile,elvalaszto); olvas(max-elad,modfile); write(tempfile,max-elad); write(munkafile,elvalaszto); olvas(atlag-elad,modfile); write(tempfile,atlag-elad); write(munkafile,elvalaszto); end; write(sorvege,tempfile); end; {-a bekenhagy eljaras vege-} Procedure pufferbolki; var tmp:string; {Mivel a readln-t parameterezni kell} sorsz:longint; i:integer; begin close(pufferfile); reset(pufferfile); sorsz:=0; while not(EOF(munka)) do begin readln(munka); inc(i); end; repeat inc(i); write(tempfile,i); write(tempfile;elvalaszto); olvas(kezdoar,pufferfile); write(tempfile,kezdoar); write(tempfile,elvalaszto); olvas(zaroar,pufferfile); write(tempfile,zaroar); write(tempfile,elvalaszto); olvas(minelad,pufferfile); write(tempfile,minelad); write(tempfile,elvalaszto); olvas(maxelad,pufferfile); write(tempfile,maxelad); write(tempfile,elvalaszto); olvas(atlagelad,pufferfile); write(tempfile,atlagelad); write(tempfile,elvalaszto); write(tempfile,sorvege); until (EOF(pufferfile)); end; {-a Pufferbolki aleljaras vege-} Begin s:='munka.'+n; {a hanyadik nap problemaja} assign(munkafile,s); reset(modfile), reset(munka), {--a modositasok elvegzese--} while ( not(EOF(modfile)) or not(EOF(munkafile)) ) do begin olvas(sorszam,munkafile), olvas(ModNo,modfile), {a leptetes miatt} read(modfile,modtip); case modtip of s{emmi}: begin bekenhagy; end; {a regiek maradnak} m{odosit}: begin, modosit; end; {az ujak lesznek} b{eszur}: begin beszur; end; {az egesz vegere kerul egy uj} t{orol}: begin kizar; end; {a jegyzest felfuggesztette'k...} end; end; {--Ha valamelyik file elfogy -> az adatok masolasa--} if EOF(modfile) then while not(vege(munkafile)) do begin olvas(kezdoar,munkafilefile); write(tempfile,kezdoar); write(tempfile,elvalaszto); olvas(zaroar,munkafile); write(tempfile,zaroar); write(tempfile,elvalaszto); olvas(min-elad,munkafile); write(tempfile,min-elad); write(tempfile,elvalaszto); olvas(max-elad,munkafile); write(tempfile,max-elad); write(tempfile,elvalaszto); olvas(atlag-elad,munkafile); write(tempfile,atlag-elad); write(tempfile,elvalaszto); write(tempfile,sorvege); end; else begin while not(EOF(munka)) do begin readln(munka); inc(i); end; while not(EOF(modfile)) do begin inc(i); write(tempfile,i); write(tempfile;elvalaszto); olvas(kezdoar,modfile); write(tempfile,kezdoar); write(tempfile,elvalaszto); olvas(zaroar,modfile); write(tempfile,zaroar); write(tempfile,elvalaszto); olvas(min-elad,modfile); write(tempfile,min-elad); write(tempfile,elvalaszto); olvas(max-elad,modfile); write(tempfile,max-elad); write(tempfile,elvalaszto); olvas(atlag-elad,modfile); write(tempfile,atlag-elad); write(tempfile,elvalaszto); end; end; close(modfile) {--A beszurando reszvenyek kezelese--} {close(tempfile), nyit(tempfile) Azert, hogy az elejere keruljunk} while not(vege(pufferfile)) do begin pufferbolki; end; close(tempfile); close(pufferfile); erase(pufferfile); rename(tempfile-rol, munkafile-ra); End; BEGIN Reszveny_idoszerusites; END. -----------------------