uses crt;
type Tigr=record {тип запись с полями}
nam:string[20]; {название}
stm:word; {стоимость}
vz1:byte; {нижний возраст}
vz2:byte; {верхний возраст}
end;
var sp:array[0..100] of Tigr; {массив записей, список игрушек}
f:file of Tigr; {типизированный файл}
nz:string[20]; {переменная при смене или поске названия}
cn:word; {переменная при поиске или смене цены}
v1,v2:byte; {переменные при поиске или смене возраста}
n,i,k:byte; {разные счетчики}
c:char; {символ при выходе из цикла}
label 1,2; {метки-указатели что делать дальше}
begin
clrscr;
{Sozdanie faila}
assign(f,'igr.dat'); {}
rewrite(f); {}
n:=0;
repeat
writeln('Igrushka ',n); {заносим данные в массив}
write('Nazvanie: ');readln(sp[n].nam);
write('Cena: ');readln(sp[n].stm);
write('Min vozrast: ');readln(sp[n].vz1);
write('Max vozrast: ');readln(sp[n].vz2); {два раза Enter}
write(f,sp[n]); {записываем в файл}
c:=readkey; {если выходим, нажимаем Esc}
n:=n+1;
until c=#27;
close(f);
{Vyvod svedenij iz faila}
clrscr;
reset(f);
n:=0;
while not eof(f)do
begin
read(f,sp[n]);{читаем данные из файла и выводим на экран}
writeln(sp[n].nam,' Cena ',sp[n].stm,' ot ',sp[n].vz1,' do ',sp[n].vz2);
n:=n+1;
end;
readln;
writeln;
{Vnesenie izmenenij}
writeln('Vnesti izmenenia? 0/1');
readln(i);
if i=1 then goto 1 {если вводи 0 идем дальше, 1-вносим ихменения}
else if i=0 then goto 2;
1:write('Izmenit zapis i=');readln(i);{nachalo s 0}
write('Nazvanie: ');readln(nz);
write('Cena: ');readln(cn);
write('Min vozrast: ');readln(v1);
write('Max vozrast: ');readln(v2);
Seek(f,i); {указатель на запись, которую изменяем, нумерация с 0}
sp[i].nam:=nz;
sp[i].stm:=cn;
sp[i].vz1:=v1;
sp[i].vz2:=v2;
write(f,sp[i]);
{Proverka izmenenij}
writeln('Fail posle izmenenij:');
reset(f);
n:=0;
while not eof(f)do
begin
read(f,sp[n]);
writeln(sp[n].nam,' Cena ',sp[n].stm,' ot ',sp[n].vz1,' do ',sp[n].vz2);
n:=n+1;
end;
writeln;
writeln('Prodolzit izmenenia? 0/1');
readln(i);
if i=1 then goto 1
else if i=0 then goto 2;
readln;
close(f);
{Poisk igrushki}
2:reset(f);
write('Nazvanie igrushki: ');readln(nz);{вводим название}
n:=0;k:=0;
while not eof(f)do
begin
read(f,sp[n]);
if
{если все условия соблюдаются, то выводим на экран}
(sp[n].nam=nz)and(sp[n].stm<=2000)and(sp[n].vz1<=4)and(sp[n].vz2>=4)then
begin
writeln(sp[n].nam,' Cena ',sp[n].stm,' ot ',sp[n].vz1,' do ',sp[n].vz2);
k:=k+1;
end;
n:=n+1;
end;
{если совпадений нет, сообщаем}
if k=0 then writeln('Takih igrushek net!');
readln;
end.