по первой/третей к.р. есть подобная задачка, как исходник могу скинуть.
program
uses mod3,mod4;
var s:string;
c,n:integer;
a:mas;
begin
s:='mar.dat';
repeat
writeln('veberite deystvie');
writeln('1-vvod 2-vyvod vseh dannyh 3-poisk po adresu 4-po imeni 5-po advokatu ');
writeln('6-po notasriusu 7- po rayony 8-izmenenie 9-udalenie 10-dobavlenie 11-vyhod');
readln©;
case c of
1:init(s);
2:vyvod(s);
3:vyvod_adr(s);
4:vyvod_name(s);
5:vyvod_adv(s);
6:vyvod_not(s);
7:vyvod_ray(s);
8:begin red(s,a,n);izmen(a,n);writ(s,a,n);end;
9:begin red(s,a,n);udal(s,a,n);end;
10:begin red(s,a,n);dobav(a,n);writ(s,a,n)end;
end;
until c=11;
end.
--------------------------------------------------
mod3.
unit mod3;
interface
type
adres=record
ray,ul:string[15];
dom:integer;
end;
info=record
nom:longint;
fio:string[30];
end;
kons=record
adr:adres;
name:string[20];
adv,notr:info;
end;
procedure init(filename:string);
procedure vyv(i:integer;a:kons);
procedure vyvod(filename:string);
procedure vyvod_adr(filename:string);
procedure vyvod_name(filename:string);
procedure vyvod_adv(filename:string);
procedure vyvod_not(filename:string);
procedure vyvod_ray(filename:string);
implementation
procedure init(filename:string);
var f:file of kons;
a:kons;
i,n:integer;
begin
assign(f,filename);
rewrite(f);
writeln('vvedite kol-vo konsultazyy');
readln
;
writeln('vvedite dannye');
for i:=1 to n do
begin
writeln('konsultaziya ',i);
write('nazvanie->');readln(a.name);
write('rayon->');readln(a.adr.ray);
write('nomer doma->');readln(a.adr.dom);
write('uliza->');readln(a.adr.ul);
write('advokat FIO->');readln(a.adv.fio);
write('advokat telefon->');readln(a.adv.nom);
write('notarius FIO->');readln(a.notr.fio);
write('notarius telefon->');readln(a.notr.nom);
write(f,a);
end;
close(f);
end;
procedure vyv(i:integer;a:kons);
begin
writeln('konsultaziya ',i,' ' ,a.name);
writeln('adress ',a.adr.ray,' nomer doma ',a.adr.dom,' uliza ',a.adr.ul);
writeln('advokat ',a.adv.fio,' telefon ',a.adv.nom);
writeln('notarius ',a.notr.fio,' telefon ',a.notr.nom);
writeln;
end;
procedure vyvod(filename:string);
var f:file of kons;
a:kons;
i:integer;
begin
assign(f,filename);
reset(f);
i:=0;
while not eof(f) do
begin
i:=i+1;
read(f,a);
vyv(i,a);
end;
close(f);
end;
procedure vyvod_adr(filename:string);
var f:file of kons;
a:kons;
i,n:integer;
s:string;
begin
writeln('vvedite ulizu');
readln(s);
writeln('vvedite nomer doma');
readln
;
assign(f,filename);
reset(f);
i:=0;
while not eof(f) do
begin
read(f,a);
if (a.adr.ul=s)and(a.adr.dom=n) then
begin
i:=i+1;
vyv(i,a);
end;
end;
close(f);
if i=0 then writeln('konsultazyy po dannomu adressu net');
end;
procedure vyvod_name(filename:string);
var f:file of kons;
a:kons;
i:integer;
s:string;
begin
writeln('vvedite nazvanie');
readln(s);
assign(f,filename);
reset(f);
i:=0;
while not eof(f) do
begin
read(f,a);
if (a.name=s) then
begin
i:=i+1;
vyv(i,a);
end;
end;
close(f);
if i=0 then writeln('konsultazyy s takim nazvaniem net');
end;
procedure vyvod_adv(filename:string);
var f:file of kons;
a:kons;
i:integer;
s:string;
n:longint;
begin
writeln('vvedite FIO advokata');
readln(s);
writeln('vvedite telefon advokata');
readln
;
assign(f,filename);
reset(f);
i:=0;
while not eof(f) do
begin
read(f,a);
if (a.adv.fio=s)or(a.adv.nom=n) then
begin
i:=i+1;
vyv(i,a);
end;
end;
close(f);
if i=0 then writeln('advokatov s takim FIO ili nomerom telefona net');
end;
procedure vyvod_not(filename:string);
var f:file of kons;
a:kons;
i:integer;
s:string;
n:longint;
begin
writeln('vvedite FIO notariusa');
readln(s);
writeln('vvedite telefon notariusa');
readln
;
assign(f,filename);
reset(f);
i:=0;
while not eof(f) do
begin
read(f,a);
if (a.notr.fio=s)or(a.notr.nom=n) then
begin
i:=i+1;
vyv(i,a);
end;
end;
close(f);
if i=0 then writeln('notariuson s takim FIO ili nomerom telefona net');
end;
procedure vyvod_ray(filename:string);
var f:file of kons;
a:kons;
i:integer;
s:string;
begin
writeln('vvedite nazvanie rayona');
readln(s);
assign(f,filename);
reset(f);
i:=0;
while not eof(f) do
begin
read(f,a);
if (a.adr.ray=s) then
begin
i:=i+1;
vyv(i,a);
end;
end;
close(f);
if i=0 then writeln('konsultazyy s dannom rayone net');
end;
end.
--------------------------------------------------
mod4.
unit mod4;
interface
uses mod3;
type mas=array[1..15] of kons;
procedure red(filename:string;var a:mas;var n:integer);
procedure writ(filename:string; a:mas;n:integer);
procedure izmen(var a:mas;n:integer);
procedure udal(filename:string;a:mas;n:integer);
procedure dobav(var a:mas;var n:integer);
implementation
procedure red(filename:string;var a:mas;var n:integer);
var f:file of kons;
begin
assign(f,filename);
reset(f);
n:=0;
while not eof(f) do
begin
n:=n+1;
read(f,a[n]);
end;
close(f);
end;
procedure writ(filename:string; a:mas;n:integer);
var f:file of kons;
i:integer;
begin
assign(f,filename);
rewrite(f);
for i:=1 to n do
write(f,a
);
close(f);
end;
procedure izmen(var a:mas;n:integer);
var k:integer;
begin
writeln('vvedite nomer izmenyaemoy zapisi');
readln(k);
if k<n then
begin
writeln('vvedite dannye');
write('nazvanie->');readln(a[k].name);
write('rayon->');readln(a[k].adr.ray);
write('nomer doma->');readln(a[k].adr.dom);
write('uliza->');readln(a[k].adr.ul);
write('advokat FIO->');readln(a[k].adv.fio);
write('advokat telefon->');readln(a[k].adv.nom);
write('notarius FIO->');readln(a[k].notr.fio);
write('notarius telefon->');readln(a[k].notr.nom);
end else writeln('takoe net');
end;
procedure udal(filename:string;a:mas;n:integer);
var k:integer;
f:file of kons;
i:integer;
begin
writeln('vvedite nomer udalyaemoy zapisi');
readln(k);
if k<n then
begin
assign(f,filename);
rewrite(f);
for i:=1 to n do
if i<>k then write(f,a);
close(f);
end else writeln('takoe net');
end;
procedure dobav(var a:mas;var n:integer);
var k:integer;
begin
k:=n+1;
writeln('vvedite dannye dlya dobavleniya');
write('nazvanie->');readln(a[k].name);
write('rayon->');readln(a[k].adr.ray);
write('nomer doma->');readln(a[k].adr.dom);
write('uliza->');readln(a[k].adr.ul);
write('advokat FIO->');readln(a[k].adv.fio);
write('advokat telefon->');readln(a[k].adv.nom);
write('notarius FIO->');readln(a[k].notr.fio);
write('notarius telefon->');readln(a[k].notr.nom);
n:=k;
end;
end.