Изменить данную программу, так, чтобы она удаляла все отрицательные элементы! 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.

метал3 метал3    3   31.07.2019 10:40    0

Ответы
Amixorp Amixorp  03.10.2020 18:29
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.

а вообще правильнее создать еще один массив и переписать туда нужные элементы - куда меньше операций, циклов и затрат памяти. Массив не предназначен для "удаления" элементов в нем
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика