Используя сформированный файл, вывести фамилии тех, кто был на соревнованиях в заданном городе в заданном году.
Program PascalGuru;
uses crt;
procedure MENU; forward;
procedure zapisi;
var
f: text;
n, i: integer;
deni, god: integer;
fam, mesiac, mesto: string;
begin
assign(f, 'COMPETITION.DAT');
rewrite(f);
clrscr;
write('Skoliko uchastnikov xotite zapisati? ');
readln(n);
for i := 1 to n do
begin
clrscr;
writeln('Zapisyvaem ', i, ' uchastnika:');
write('Familia: ');
readln(fam);
writeln;
writeln('Data:');
writeln('Deni: ');
readln(deni);
writeln('Mesiac: ');
readln(mesiac);
writeln('God: ');
readln(god);
writeln('Mesto provedenia:');
readln(mesto);
writeln(f, fam, ' ', deni, '.', mesiac, '.', god, ' ', mesto);
end;
writeln('Fail uspeshno zapisan...');
readln;
close(f);
MENU;
end;
{ ----------------------- }
procedure readALL;
var
f: text;
s: string;
begin
assign(f, 'COMPETITION.DAT');
reset(f);
clrscr;
writeln('Vse uchastniki:');
writeln;
while (not eof(f)) do
begin
readln(f, s);
writeln(s);
end;
readln;
close(f);
MENU;
end;
{ ----------------------- }
procedure readGOD;
var
f: text;
s, fam, mesto, mestoR: string;
p, god, godR, code: integer;
b: boolean;
begin
assign(f, 'COMPETITION.DAT');
reset(f);
clrscr;
writeln('Vyvod Famili uchastnikov po mestu i godu:');
writeln;
write('Vvedite Gorod provedeniya: ');
readln(mestoR);
write('Vvedite GOD provedeniya: ');
readln(godR);
clrscr;
writeln('uchastniki ', godR, ' goda, s goroda "', mestoR, '":');
writeln;
b := false;
while (not eof(f)) do
begin
readln(f, s);
p := pos(' ', s);
fam := copy(s, 1, p - 1);
delete(s, 1, p);
p := pos('.', s);
delete(s, 1, p);
p := pos('.', s);
delete(s, 1, p);
p := pos(' ', s);
val(copy(s, 1, p - 1), god, code);
mesto := copy(s, p + 1, length(s) - p);
if (mesto = mestoR) and (god = godR) then
begin
writeln(fam);
b := true;
end;
end;
if not b then
writeln('Takix uchastnikov net...');
readln;
close(f);
MENU;
end;
{ ----------------------- }
procedure MENU;
type
op = 0 .. 3;
var
option: op;
begin
clrscr;
writeln;
writeln('MENU:');
writeln;
writeln('1) Zapisi v fail');
writeln('2) Procitati vesi fail');
writeln('3) Procitati opredelennyx uchastnikov');
writeln;
writeln('0) Exit');
readln(option);
if option = 1 then
zapisi;
if option = 2 then
readALL;
if option = 3 then
readGOD;
end;
{ ----------------------- }
begin
MENU;
end.