Добавил:
Источник:
Uman
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:01 семестр / Задачи на Paskal / Array. Массивы / 06
.txt Старая задача с сортировкой массива записей по росту. Очень поможет решить последнюю задачу с сортировкой в typefiles.
*****************************************************program Project68;
type man=record
name:string;
st:integer; end;
mas=array[1..10] of man;
procedure input(var a:mas; var n:integer);
var i: integer;
begin
write('vvedyte N: '); readln(n); writeln('name_rost :');
for i:=1 to n do begin write(i,' : ');
readln(a[i].name); write('st',i,' : ');
readln(a[i].st);
end; end;
procedure sort(var a:mas; n:integer);
var i,k,j:integer; b:man;
begin
k:=1; i:=1;
while k<>0 do
begin
k:=0;
for j:=1 to n-i do
if a[j].st<a[j+1].st then
begin
b:=a[j];
a[j]:=a[j+1];
a[j+1]:=b; k:=k+1 end;
i:=i+1; end; end;
procedure output(a:mas; n:integer);
var i:integer;
begin
writeln('Spisok : ');
for i:=1 to n do
writeln(a[i].name,' ',a[i].st);
end;
procedure vst(var a:mas; var n:integer);
var i,j:integer; b:man; t:boolean;
begin n:=n+1;
writeln(n,' : '); readln(b.name); readln(b.st);
i:=0; t:=false;
repeat i:=i+1;
if b.st > a[i].st then begin t:=true;
for j:=n-1 downto i do
a[j+1]:=a[j] end;
until t=true;
a[i]:=b;
end;
var a:mas; n,i,k:integer;
begin
input(a,n);
sort(a,n);
output(a,n);
write('skolko man-off dovavit?! '); readln(k);
for i:=1 to k do begin
vst(a,n); end;
output(a,n);
end.
*****************************************************program Project68;
type man=record
name:string;
st:integer; end;
mas=array[1..10] of man;
procedure input(var a:mas; var n:integer);
var i: integer;
begin
write('vvedyte N: '); readln(n); writeln('name_rost :');
for i:=1 to n do begin write(i,' : ');
readln(a[i].name); write('st',i,' : ');
readln(a[i].st);
end; end;
procedure sort(var a:mas; n:integer);
var i,k,j:integer; b:man;
begin
k:=1; i:=1;
while k<>0 do
begin
k:=0;
for j:=1 to n-i do
if a[j].st<a[j+1].st then
begin
b:=a[j];
a[j]:=a[j+1];
a[j+1]:=b; k:=k+1 end;
i:=i+1; end; end;
procedure output(a:mas; n:integer);
var i:integer;
begin
writeln('Spisok : ');
for i:=1 to n do
writeln(a[i].name,' ',a[i].st);
end;
procedure vst(var a:mas; var n:integer);
var i,j:integer; b:man; t:boolean;
begin n:=n+1;
writeln(n,' : '); readln(b.name); readln(b.st);
i:=0; t:=false;
repeat i:=i+1;
if b.st > a[i].st then begin t:=true;
for j:=n-1 downto i do
a[j+1]:=a[j] end;
until t=true;
a[i]:=b;
end;
var a:mas; n,i,k:integer;
begin
input(a,n);
sort(a,n);
output(a,n);
write('skolko man-off dovavit?! '); readln(k);
for i:=1 to k do begin
vst(a,n); end;
output(a,n);
end.