Удаление элементов одномерного массива

Задача

Допустим, имеется одномерный массив, содержащий числа от 0 до 49 включительно. Требуется исключить из него все элементы, значения которых меньше 15.

Решение

Присваивание значение n переменной m требуется, т.к. n - константа и не может быть изменена. Поскольку при "просмотре" массива в цикле while некоторые элементы будут удаляться, то значение m, обозначающее длину массива, будет уменьшаться.

Если очередной элемент не удаляется, то переходим к просмотру следующего элемента (i := i + 1) и не уменьшаем массив (m не меняется).

Программа на языке Паскаль:

const n = 20;
 
var
    arr: array[1..n] of integer;
    i, j, m: integer;
 
begin
    randomize;
    for i := 1 to n do begin
        arr[i] := random(50);
        write(arr[i]:4);
    end;
 
    m := n;
    i := 1;
    while i <= m do
        if arr[i] < 15 then begin
            for j := i to m - 1 do
                arr[j] := arr[j+1];
            m := m - 1
        end
        else
            i := i + 1;
 
    for i:= 1 to m do
        write(arr[i]:4);
 
readln
end.

Тема

Одномерные массивы

Уровень

Комбинированные задачи

Комментарии

С удалением чисел из массива

program DeleteIzodn;
 
const n=25;
 
var
    arr: array of integer;
    i, j, m: integer;
 
begin
SetLength(arr, n);
 
    for i := 0 to n-1 do begin
        arr[i] := random(200)-100;
        write(arr[i]:4);
    end;
 writeln;
 
    i := 0;
    m := n-1;
 
    while i <= m do
        if arr[i] mod 3 = 0 then begin
            for j := i to m - 1 do
                arr[j] := arr[j+1];
            m := m - 1
        end
        else
            i := i + 1;
 
 writeln;
 SetLength(arr, M+1);
 for i:= 0 to m do
        write(arr[i]:4);
 
end.

Добавить комментарий