Изменить данную программу, так, чтобы она удаляла все отрицательные элементы! type linmass = array [1..100] of integer; var a : linmass; n, i, j, i1 : integer; begin write('количество элементов массива: '); readln(n); i1: =0; for i : = 1 to n do begin write('введите a[', i, '] '); readln(a[i]); if(a[i]< 0)and(i1=0)then i1: =i; end; if i1=0 then write('отрицательных элементов нет') else begin if i1=n then n: =n-1 else begin for i: =i1 to n-1 do a[i]: =a[i+1]; n: =n-1; end; writeln('удаление первого отрицательного элемента'); for i : = 1 to n do write(a[i]: 6); end; end.
A: array [1..100] of Integer;
N, i, j, k: Integer;
begin
Write('Количество элементов массива: ');
ReadLn(N);
k := 0;
for i := 1 To N Do
begin
Write('A[', I, '] = ');
ReadLn(A[i]);
{A[i] := Random(100) - 50;
write(A[i], ' ');}
if A[i] < 0 then k := i;
end;
writeln;
{фильтр, если нет отрицательных}
if k = 0 then begin
write('Отрицательных элементов нет');
halt;
end;
writeln('Удаление отрицательных элементов');
k := 1;
while (n > 0) and (k <= n) do
begin
if A[k] < 0 then begin
for i := k to n - 1 do
A[i] := A[i + 1];
n := n - 1;
end
else k := k + 1;
end;
for i := 1 To N Do
write(A[i], ' ');
end.
а вообще правильнее создать еще один массив и переписать туда нужные элементы - куда меньше операций, циклов и затрат памяти. Массив не предназначен для "удаления" элементов в нем