program baza;
uses crt;
type
sp=record
fio : string;
strana: string;
vid : string;
end;
vec = array [1..8] of sp;
var t,t1,t2,t3:vec;
f:text;
i,k,m,l,s,dlina,q,w:integer ;
a,b,c,d,e,p:string;
Procedure VVod (var sp:vec); {Ввод списка из файла и вывод на экран}
var i,w: integer;
Begin
For i:= 1 to 7 do
With sp[i] do
Begin
readln (f,fio);
q:=30-length(fio);
for w:=1 to q do
fio:=fio+' ';
fio:=fio+'|';
write(fio);
readln(f,strana);
q:=30-length(strana);
for w:=1 to q do
strana:=strana+' ';
strana:=strana+'|';
write(strana);
readln(f,vid);
q:=30-length(vid);
for w:=1 to q do
vid:=vid+' ';
writeln(vid);
end;
end;
Begin assign (f,'rally.txt'); reset (f);
clrscr;
Writeln('Исходный массив записей:':30);
Writeln;
VVod (t);
close(f );
writeln('Желаете удалить(1),добавить(2),заменить(3) какую-либо строку? ');
readln(m);
if m=1 then
begin
write('И какой же номер удаляемой строки? '); {delete}
readln(l);
dlina :=6;
For i:= l to 6 do
With t[i] do
begin
t [i]:=t[i+1] ;
s:=length(t[7].fio );
delete(t[7].fio,1,s);
s:=length(t[7].strana );
delete(t[7].strana,1,s);
s:=length(t[7].vid );
delete(t[7].vid,1,s);
end;
end;
if m=2 then {добавить строку}
begin
writeln('Пожалуйста, ввведите данные новой записи: ФИО, страна, вид');
readln(t[8].fio);
q:=30-length(t[8].fio);
for w:=1 to q do
t[8].fio:=t[8].fio+' ';
t[8].fio:=t[8].fio+'|';
readln(t[8].strana);
q:=30-length(t[8].strana);
for w:=1 to q do
t[8].strana:=t[8].strana+' ';
t[8].strana:=t[8].strana+'|';
readln(t[8].vid);
q:=30-length(t[8].vid);
for w:=1 to q do
t[8].vid:=t[8].vid+' ';
dlina :=8;
end;
if m=3 then {замена}
begin
writeln('Пожалуйста, введите номер, который нужно заменить');
readln(i);
writeln(' А теперь ведите новые ФИО ');
readln(a);
t[i].fio:=a;
q:=30-length(t[i].fio);
for w:=1 to q do
t[i].fio:=t[i].fio+' ';
t[i].fio:=t[i].fio+'|';
writeln(' Введите новую страну, если Вас не затруднит');
readln(b);
t[i].strana:=b;
q:=30-length(t[i].strana);
for w:=1 to q do
t[i].strana:=t[i].strana+' ';
t[i].strana:=t[i].strana+'|';
writeln(' Будьте добры, введите новый вид гонки');
readln(c);
t[i].vid:=c;
q:=30-length(t[i].vid);
for w:=1 to q do
t[i].vid:=t[i].vid+' ';
dlina:=7;
end;
Writeln ('Результат:':30);
For k:= 1 to dlina do
With t[k] do Writeln(fio:6,strana,vid);
k:=1;
writeln( 'Сейчас мы создадим массив гонщиков из выбранных вами стран, хорошо? ');
readln(a);
if (a='да') or (a='хорошо')or (a='ок') then
begin
writeln(' По каким странам стоит выбрать?');
readln(b);
readln(c);
d:=copy(b,1,3);
e:=copy(c,1,3);
for i:=1 to 7 do
begin
if copy(t[i].strana,1,3)=e
then
begin
t1[k].fio :=t[i].fio;
t1[k].strana :=t[i].strana;
t1[k].vid :=t[i].vid;
k:=k+1;
end;
if copy(t[i].strana,1,3)=d
then
begin
t1[k].fio :=t[i].fio;
t1[k].strana :=t[i].strana;
t1[k].vid :=t[i].vid;
k:=k+1;
end;
end;
t2:=t1;
end;
if a='нет' then
begin
t2:= t;
Writeln ('Результат:':30);
For k:= 1 to 7 do
With t1[k] do Writeln(fio:6,strana,vid);
i:=1;
end;
writeln('Не желаете ли отсортировать массивчик?');
writeln('Быть может, по фамилиям? Ответьте: да или нет');
readln(a);
if a ='да' then
for k:=1 to 6 do
for i:=1 to 7 do
if t2[i+1].fio<t2[i].fio then
begin
t3[1]:= t2[i+1];
t2[i+1]:=t2[i] ;
t2[i] :=t3[1];
end;
if a='нет' then
begin
writeln('А как насчет стран? Ответьте да или нет');
readln(b);
if b ='да' then
for k:=1 to 6 do
for i:=1 to 7 do
if t2[i+1].strana<t2[i].strana then
begin
t3[1]:= t2[i+1];
t2[i+1]:=t2[i] ;
t2[i] :=t3[1];
end;
end;
if b='нет' then
begin
writeln('А если по видам соревнований в гонках? Ответьте: да или нет');
readln(p);
if p ='да' then
for k:=1 to 6 do
for i:=1 to 7 do
if t2[i+1].vid<t2[i].vid then
begin
t3[1]:= t2[i+1];
t2[i+1]:=t2[i] ;
t2[i] :=t3[1];
end;
end;
Writeln ('Результат:':30);
For k:= 1 to 8 do
With t2[k] do Writeln(fio:6,strana,vid);
readln;
End.