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

uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
    n,i,j,k:byte;
    x:integer;
begin
clrscr;
randomize;
repeat
write('Размер массива до ',nmax div 2,' n=');//массив может удвоиться
readln(n);
until n in [1..nmax div 2];
writeln('Введите в массив ',n,' положительных и отрицатедьных целых чисел:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  readln(a[i]);
 end;
clrscr;
writeln('Исходный массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
i:=1;//идем с начала
while i<=n do
 begin
  if a[i]>0 then//если положительный
   begin
    n:=n+1;//увеличиваем размер массива
    for j:=n downto i+1 do//к кнцу массива
    a[j]:=a[j-1];//сдвигаем все элементы до этого
    a[i]:=0;//на его место пишем 0
    i:=i+2;//перепрыгиванм через это число
   end
  else i:=i+1;//иначе просто идем вперед
 end;
writeln('Массив после вставки нолей:');
for i:=1 to n do
write(a[i],' ');
readln
end.

Leave a Comment

51 + = 52