Сжать массив выбросив каждый третий элемент, без использования дополнительного массива. отсортировать полученный массив в порядке возрастания методом прямого включения. вывести на экран исходный, полученный и отсортированный массивы — Pascal(Паскаль)

uses crt;
var a,b:array[1..100] of integer;
    n,m,i,j,x,k:integer;
begin
clrscr;
randomize;
write('Размер массива n=');
readln(n);
writeln('Исходный массив:');
for i:=1 to n do
 begin
  a[i]:=random(20)-9;
  write(a[i],' ');
 end;
writeln;
m:=n;{запомним длину исходного массива}
i:=m;{встаем в конец масива}
while i>=1 do{идем к началу, чтоб не менялись индексы неудаленных элемеентов}
 begin
  if i mod 3=0 then{если третий}
   begin
    for j:=i to m-1 do{сдвигаем к нему конец массива, он исчезает}
    a[j]:=a[j+1];
    m:=m-1;{уменьшаем размер массива}
    i:=i-1;{к след. элементу}
 end
else i:=i-1;{если не третий, то сразу к следующему}
end;
writeln('Сжатый массив:');
for i:=1 to m do
write(a[i],' ');
writeln;
for i:=2 to m do{сортировка включениями, читайте теорию}
   begin
    x:=a[i];
    j:=1;
    while x>a[j] do inc(j);
    for k:=i-1 downto j do a[k+1]:= a[k];
    a[j]:=x;
   end;
writeln('Отсортированный массив:');
for i:=1 to m do
write(a[i],' ');
readln
end.

Leave a Comment

+ 37 = 42