Дан массив целых чисел. Удалить из него все четные элементы стоящие на нечетных местах — Pascal(Паскаль)

program pr3;
uses crt;
var     A,B:array[1..100] of integer;
 
N,j,i,m : integer;
begin
write('Введите размерность массива ');
read(N);
for i:=1 to n do read(A[i]);
 
m:=0;
j:=1;
for i:=1 to n do
if (((A[i]mod 2<>0 ) and (i mod 2=0)) or ((A[i]mod 2<>0 ) and (i mod 2 = 1))
      or (A[i]mod 2 = 0 ) and (i mod 2=0)) then
begin
B[j]:=A[i];
inc(m);
inc(j);
end;
writeln('Новый массив');
for j:=1 to m do write(B[j],' ');
end.

Следующий вариант

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

Leave a Comment

62 − 60 =