program ciupaga;
uses Crt;
const
nazwa2='I:\pliki\pliczekpom.dat';
nazwa='I:\pliki\pliczek.dat';
type
plik=file of integer;
var p,q:plik;
odp:char;
procedure dopis (var p:plik);
var a:integer;
begin
assign(p,nazwa);
{$I-}
reset(p);
{$I+}
if IOResult=0 then seek(p,filesize(p)) else rewrite(p);
write('Podaj liczbe: ');
readln(a);
write(p,a);
close(p);
end;
procedure wypis (var p:plik);
var a,i:integer;
begin
assign(p,nazwa);
{$I-}
reset(p);
{$I+}
if IOResult=0 then
begin
while not eof(p) do
begin
read(p,a);
writeln(a);
end;
readkey;
close(p);
end else write('Plik nie istnieje');
end;
procedure ilosc(var p:plik);
var k,a,s:integer;
begin
write('Jakiej wartosci poszukiwac?: ');
readln(k);
assign(p,nazwa);
{$I-}
reset(p);
{$I+}
s:=0;
if IOResult=0 then
begin
while not eof(p) do
begin
read(p,a);
if a=k then s:=s+1;
end;
close(p);
writeln('W pliku znajduje sie ',s,' liczb(y) ktorych wartosc wynosi ',k);
end else write('Plik nie istnieje');
readkey;
end;
procedure usun(var p,q:plik);
var k,a,s:integer;
begin
write('Jaka liczbe usunac z pliku?');
readln(k);
assign(q,nazwa2);
rewrite(q);
assign(p,nazwa);
{$I-}
reset(p);
{$I+}
s:=0;
if IOResult=0 then
begin
while not eof(p) do
begin
read(p,a);
write(q,a);
end;
close(p);
close(q);
rewrite(p);
reset(q);
while not eof(q) do
begin
read(q,a);
if a<>k then write(p,a) else s:=s+1;
end;
close(p);
close(q);
writeln('Usunalem ',s,' liczb(y)');
end else write('Plik nie istnieje');
readkey;
end;
procedure menu;
var odp:char;
begin
ClrScr;
textcolor(green);
writeln(' *===========================================*');
writeln('|| 1 - Dopisywanie liczby do pliku ||');
writeln('|| 2 - Wypisanie listy liczb ||');
writeln('|| 3 - Ilosc liczb o podaniej wartosci ||');
writeln('|| 4 - Usuwanie podawanej liczby z pliku ||');
writeln('|| Esc - Wyjscie ||');
writeln(' *===========================================*');
textcolor(red);
writeln;
writeln('Czego pragniesz?');
textcolor(7);
odp:=readkey;
case odp of
'1':dopis(p);
'2':wypis(p);
'3':ilosc(p);
'4':usun(p,q);
#27:halt;
end;
end;
begin
repeat menu;
until false;
end.