Дана последовательность A размерности N,числа K и L.Сформировать последовательность B,в которую входят элементы Ai(i=1…K) ,упорядоченные по возрастанию,затем Ai(i=1…N),упорядоченные по убыванию,затем Ai(i=K+1…L-1) в исходном порядке.Вывести исходную и полученную последовательность. Упорядочивание элементов последовательности оформить подпрограммой — Pascal(Паскаль)

uses crt;
const nmax=100;
type mas=array[1..nmax] of integer;
procedure SortVoz(var v:mas;i1,i2:byte);{сортировка отрезка по возрастанию}
var i,j:byte;
    x:integer;
begin
for i:=i1 to i2-1 do
for j:=i+1 to i2 do
if v[i]>v[j] then
 begin
  x:=v[i];
  v[i]:=v[j];
  v[j]:=x;
 end;
end;
procedure SortUb(var v:mas;i1,i2:byte);{то же по убыванию}
var i,j:byte;
    x:integer;
begin
for i:=i1 to i2-1 do
for j:=i+1 to i2 do
if v[i]<v[j] then
 begin
  x:=v[i];
  v[i]:=v[j];
  v[j]:=x;
 end;
end;
var a:mas;
    n,i,k,l:byte;
begin
clrscr;
randomize;
repeat
writeln('        Введите 3 числа: размер массива и 2 индекса,');
writeln('разбивающих массив на 3 части, в которых не менее 3х элементов');
write('Размер массива от 6 до ',nmax,' N=');readln(n);
write('Конец первого отрезка от 2 до ',n-4,' K=');readln(k);
write('Начало третьего отрезка от ',k+3,' до ',n-1,' L=');readln(l);
until (n in [6..nmax])and(l-k>2)and(k>1)and(l<n);
writeln('Массив:');
for i:=1 to n do
 begin
  a[i]:=random(50);
  write(a[i]:4);
 end;
writeln;
writeln;
SortVoz(a,1,k);
SortUb(a,l,n);
writeln('Сортировка первого отрезка по возрастанию, а третьего по убыванию');
for i:=1 to n do
 begin
  if i<=k then textcolor(10)
  else if i>=l then textcolor(11)
  else textcolor(12);
  write(a[i]:4);
 end;
textcolor(15);
readln
end.

Leave a Comment

29 − = 22