No Image

Удаление нечетных элементов массива

СОДЕРЖАНИЕ
0 просмотров
10 марта 2020

Задача

В одномерном массиве удалить все четные элементы и оставить только нечетные.

Похожие задачи

Решение

Данную задачу можно решить несколькими способами.

Способ 1. Скопировать в другой массив только нечетные элементы.

Это самый простой способ удаления элементов массива (в данном случае четных чисел), так как не требуется сжимать исходный массив. В представленном выше решении задачи переменная m хранит количество найденных нечетных элементов и в то же время, при заполнении второго массива является меняющимся индексом элементов.

Способ 2. Удалять четные элементы в текущем массиве, перезаписывая их расположенными правее нечетными.

Этот способ решения задачи сложнее. Здесь если встречается четный элемент, то весь остаток массива сдвигается на одну ячейку вперед. При этом найденный четный элемент затирается. Переменная m уменьшается, т. к. количество элементов массива становится меньше.

Способ 3. Использовать открытый массив.

Этот способ следует считать наиболее рациональным (однако в школьном курсе открытые массивы могут не изучаться). В предыдущих вариантах по-сути массивы не уменьшались, на экран выводилась лишь часть массива. Можно было бы вообще просто перебрать исходный массив, ничего с ним не делать и вывести на экран только нечетные элементы.

Открытый массив позволяет изменять свою длину. В решении задачи ниже после того как нечетные элементы сдвинуты и "затерли" нечетные, изменяется длина массива (процедурой setlength). Она устанавливает новую длину массива. Особенностью открытых массивов в Pascal является то, что их индексация начинается с нуля.

Здравствуйте! Помогите, пожалуйста, написать код программы на удаление всех четных элементов в массиве. Вот сам код программы:

1 ответ 1

Что ты имеешь в виду под понятием "чётные элементы"? Чётный индекс или чётное число? Если первое, то:

Читайте также:  Ворлд оф танк блитз секреты

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c++ массивы или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.12.20.35703

Урок из серии: «Язык программирования Паскаль»

На этом уроке мы поговорим о том, как можно удалить элементы из массива. В языке Паскаль нет стандартных процедур для обслуживания массивов. Поэтому мы напишем свою процедуру.

Рассмотрим два случая: удаление одного элемента из массива и удаление нескольких элементов. Для решения этих задач используются разные подходы.

Знакомство с алгоритмом удаления элемента из массива начнем со следующей задачи.

Задача 1. Необходимо удалить k-ый элемент из массива m, состоящего из n элементов.

Пусть дан одномерный массив, состоящий из 10 элементов:

9, 6, 7, 10, 14, 16, 5, 11, 4, 8.

Нужно удалить элемент с номером 6 (n=10, k=6).
Алгоритм удаления шестого элемента заключается в следующем:

  1. Сместить все элементы, начиная с 6-го, на один элемент влево: 6-му присвоить значение 7-го, 7-му присвоить значение 8-го, 8-му присвоить значение 9-го, 9-му присвоить значение 10-го: m[6]:=m[7]; m[7]:=m[8]; m[8]:=m[9]; m[9]:=m[10]. На этом сдвиг заканчивается.
    Таким образом, сдвиг начинается с k-го элемента и идет по (n-1)-й элемент:
    m[i]:=m[i+1], i=k..n-1
  2. Последнему элементу массива присвоить значение, равное 0: m[n]:=0.
  3. При дальнейшей работе с этим массивом использовать n-1 элемент.

После удаления элемента из массива, изменится количество элементов в массиве (уменьшается на один) и у части элементов изменится индекс.

После выполнения алгоритма, массив будет следующим:

Читайте также:  Фейсбук как зарегистрироваться с мобильного

9, 6,7, 10, 14, 5, 11, 4, 8, 0.

Для реализации этого алгоритма напишем процедуру с именем Delete. В качестве входных параметров передадим ей номер удаляемого элемента и массив, на выходе получим тот же массив, только измененный. Программный код процедуры будет следующим:

Рассмотрим следующую задачу.

Задача 2 . Удалить из одномерного массива максимальный элемент, если все элементы разные.

Для решения этой задачи, необходимо:

  1. Найти номер(индекс) максимального элемента — k.
  2. Удалить из массива элемент с найденным номером.

Составим программу с использованием новой процедуры. Кроме неё в программе будем использовать уже знакомые нам процедуры: Init2, Print, Maximum. В тексте программы описания процедур опущены.

Вы познакомились алгоритм удаления элемента массива. Теперь давайте рассмотрим случай, когда нужно удалить из массива несколько подряд идущих элементов.
Задача 3. Удалить из массива все максимальные элементы.

В этом случае лучше массив начинать просматривать с конца, так как иначе нужно будет снова возвращаться к элементу с номером, который только что обработали.

Эта может случиться тогда, когда подряд идут два или более максимальных элементов. Если первый удалим, то на его место сдвигается следующий максимальный элемент (индекс изменять не будет необходимости).

Если просматривать массив с конца, то на место удаленного элемента встанет уже обработанный элемент, и можно будет перейти к обработке следующего элемента (путем изменения индекса на один).

Для организации просмотра массива с конца, можно воспользоваться оператором цикла For с убывающей переменной цикла:

For i := n Downto 1 Do , где значение переменной i уменьшается от n до 1.

Для решения задачи делаем два просмотра массива.

Первый просмотр массива делаем с начала для того, чтобы найти значение максимального элемента (на этот раз нужно определить значение элемента, а не его индекс). Для этого можно использовать процедуру Maximum. У неё два выходных параметра: значение максимального элемента и его индекс.

Читайте также:  Построение карты помещения роботом

Второй просмотр производится с конца массива для того, чтобы удалить максимальные элементы. Перебираем все элементы, если текущий элемент массива имеет максимальное значение, то удаляем его, значение счётчика удаленных элементов k увеличим на 1. Подсчитываем количество удаленных элементов для того, чтобы знать, сколько элементов выводить на экран.

Ниже представлен текст программы:

Вы познакомились с алгоритмом удаления элементов из одномерного массива.

На следующем уроке продолжим изучение алгоритмов обработки одномерных массивов, рассмотрим алгоритм добавления элементов в массив.

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector