program L14_23;
{Дан неупорядоченный линейный односвязный список и массив, содержащий номера
соответствующих элементов в упорядоченном списке. Перестройте данный список в
соответствии с номерами, заданным массивом}
type
mass = array [1..10] of integer;
stroka=string[30];
procedure vvodmatr (var mass1:mass;namefile:stroka;
var n:integer);
var
i:integer;
fin:text;
begin
assign(fin,namefile);
reset(fin);
for i:=1 to n do
begin
read(fin,mass1[i]);
readln(fin);
end;
close(fin);
end;
procedure vivodmatr (namefile:stroka; mass1,mass2:mass; n:integer;
var flag,flg1:boolean);
var
i:integer;
fout:text;
begin
assign(fout,namefile);
if flag then
rewrite(fout)
else
append(fout);
if flag1 then
begin
writeln('Исходный список');
for i:=1 to n do
begin
write(fout,mass1[i]);
writeln(fout);
end;
end;
else
begin
writeln('массив перестановки');
for i:=1 to n do
begin
write(fout,mass2[i]);
writeln;
end;
writeln('Переставленный массив');
for i:=1 to n do
begin
write(fout,mass1[i]);
writeln(fout);
end;
end;
close(fout);
end;
procedure perestr(var mass1:mass; mass2:mass; n:integer);
var
mass3:mass;
i:integer;
begin
for i:=1 to n do
mass3[mass2[i]]:=mass1[i];
mass1:=mass3;
end;
var
mass1, mass2:mass;
i,n:integer;
flag,flag1:boolean;
begin
writeln('введите количество элементов');
readln(n);
vvodmatr (mass1,'L14_in.txt',n);
flag:=true;
flag1:=true;
vivodmatr ('L14_out.txt',mass1,mass2,n,flag,flag1);
writeln('Введите массив номеров');
for i:=1 to n do
read(mass2[i]);
perestr(mass1,mass2,n);
flag:=false;
flag1:=false;
vivodmatr ('L14_out.txt',mass1,mass2,n,flag,flag1);
end.
Сообщение отредактировано: klik1602 -