Изменить данную программу, так, чтобы она удаляла все отрицательные элементы! 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. а вообще правильнее создать еще один массив и переписать туда нужные элементы - куда меньше операций, циклов и затрат памяти. Массив не предназначен для "удаления" элементов в нем
Не нашли ответ?
Ответить на вопрос
Похожие вопросы