Понедельник, 07.07.2025, 13:54
Информатика в школе
Приветствую Вас Гость | RSS
Главная Удаление нескольких элементов массива 1 Регистрация Вход
Форма входа

Меню сайта

Мини-чат
300

Категории
Школа и сайт [4]
Software [18]
Hardware [14]

Календарь
Календари для ucoz

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Из массива удалить все элементы, которые меньше 0.

Рассмотрим два решения этой задачи.

Алгоритм первого решения:

1. Просматриваем массив .

2. Если элемент<0, то удаляем его и n уменьшаем.

3. Если элемент>=0, то переходим к следующему.

Фрагмент программы:

i:=1;

while i <= n do {в цикле просматриваем элементы массива}

begin

if A[i]<0 then  {проверяем, нужно ли  удалять i-ый элемент}

begin  {если нужно – удаляем i-ый элемент}

for j := i to  n-1 do

A[j]:=A[j+1]; {сдвигаем}

Dec(n); {уменьшаем количество элементов}

end;

else Inc(i); {если удалять не нужно, то переходим к следующему элементу}

end;

Пример прогона алгоритма:

Исходный массив:

0: i =1, n = 6: -1 -2 2 -3 -4 3

Состояния массива после обработки очередного элемента массива:

1: i=1, n=5: -2 2 -3 -4 3 (удален -1)

2: i=1, n=4: 2 -3 -4 3 (удален -2)

3: i=2, n=4: 2 -1 -2 3 (перешли на следующий)

4: i=2, n=3: 2 -4 3 (удален -3)

5: i=2, n=2: 2 3 (удален -4)

6: i=3, n=2: 2 3 (перешли на следующий)

Алгоритм второго решения:

1. Счетчик переписанных элементов k=0.

2. Просматриваем элементы массива.

3. Если элемент A[i] не меньше 0, k увеличиваем на 1 и переписываем элемент A[i] на k-ое место.

4. После просмотра всего массива количество переписанных элементов k заносим в n.

Фрагмент программы:

Var  k:IndexEl; {количество переписанных элементов}

Begin

...

{переписанных элементов пока не было}

k :=0;

for i :=1 to  n  do { в цикле просматриваем элементы массива}

if not(A[ i ] < 0)  then

begin

Inc(k); {увеличиваем значение k на 1}

A[k]:=A[i]; {переписываем i-ый элемент в позицию k}

end;

n := k; { в массиве оставляем k элементов}

Пример прогона алгоритма:

Исходный массив: -1 -2 2 -3 -4 3

Состояния массива после просмотра очередного элемента

массива:

0: k=0, i=1, n=6: -1 -2 2 -3 -4

3 {не переписываем}

1: k=0, i=2, n=6; -1 -2 2 -3 -4

3 {не переписываем}

2: k=1, i=3, n=6; 2 -2 2 -3 -4

3 {переписываем a[1]:=a[3]}

3: k=1, i=4, n=6; 2 -2 2 -3 -4

3 {не переписываем}

4: k=1, i=5, n=6; 2 -2 2 -3 -4

3 {не переписываем}

5: k=2, i=6, n=6; 2 3 2 -3 -4

3 {переписываем a[2]:=a[6]}

6: k=2, i=7, n=6: 2 3 2 -3 -4

3 {выход из цикла}

7: n=2: 2 3 {значение k переписываем в n}



<<Назад  || 2 |
                                                                                                                                                                                                                                           
Часы

Праздники России

Праздники России



Uploader

Поиск

Полезные ссылки
  • Официальный блог
  • Сообщество uCoz
  • Программисту
  • Олимпиаднику
  • Как создать сайт с нуля
  • Сайт МОУ СОШ №81
  • 3DNews

  • Александр Михайлович Марченко © 2025 Конструктор сайтовuCoz