Удалить из массива первый отрицательный элемент, если таковой имеется. - Turbo Pascal

Формулировка задачи:

Создать одномерный массив, состоящий из 5-ти элементов, вводимых с клавиатуры. Удалить из массива первый отрицательный элемент, если таковой имеется. Первую часть понял:
program z;
var
a:array [1..5] of integer;
i:integer;
begin
for i:=1 to 5 do
begin
write ('a[',i,']=');
readln(a[i]);
end.
А вот как быть с удалением отрицательного элемента? ------------------------------------------------------------------------------------------------------------------------------------- p.s. Не удается выхватить отрицательный элемент.. =(
program z;
uses crt;
var
a:array [1..5] of integer;
i,b:integer;
begin
clrscr;
for i:=1 to 5 do
begin
write ('a[',i,']=');
readln(a[i]);
end;
for i:=1 to 5 do
begin
if a[i]<0
then a[i]:=b
writeln ('отрицательный ',b); readln;
end.
ход программы: a[1]=3 a[2]=7 a[3]=-5 a[4]=8 a[5]=1 отрицательный 0

Код к задаче: «Удалить из массива первый отрицательный элемент, если таковой имеется. - Turbo Pascal»

textual
program z1;
uses crt;
const
p=5;
type
tarray=array[1..p] of integer;
var a:tarray;
    n,i,b:integer;
begin
clrscr;
n:=p;
for i:=1 to n do
 begin
  write ('a[',i,']=');
  readln(a[i]);
 end;
 {найдем 1 отрицательный}
i:=1;
b:=0;
while(i<=n)and(b=0) do
if a[i]<0 then b:=i
else i:=i+1;
if b=0 then write('Отрицательных элементов нет')
else  {если нашли}
 begin
  writeln('Первый отрицательный a[',b,']=',a[b]);
  if b=n then n:=n-1 {если последний, отрезаем}
  else {иначе}
   begin
    for i:=b to n-1 do {сдвигаем на него конец массива}
    a[i]:=a[i+1];
    n:=n-1;  {обрезаем}
   end;
  writeln ('массив после удаления') ;
  for i:=1 to n do
  write (a[i]:3, '');
 end;
readln;
end.

13   голосов, оценка 3.692 из 5


СОХРАНИТЬ ССЫЛКУ