Изменить данную программу, так, чтобы она удаляла все отрицательные элементы! Type LinMass = array [1..100] of Integer; Var A : LinMass; N, i, j, i1 : Integer; begin Write('Количество элементов массива: '); ReadLn(N); i1:=...
Изменить данную программу, так, чтобы она удаляла все отрицательные элементы!
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.
Ответ(ы) на вопрос:
var
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.
а вообще правильнее создать еще один массив и переписать туда нужные элементы - куда меньше операций, циклов и затрат памяти. Массив не предназначен для "удаления" элементов в нем
Не нашли ответ?
Похожие вопросы