Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 14 стр.

UptoLike

Составители: 

14
Задача 5: Удаление элементов из массива по значению (1 способ решения).
В этой задаче неявно подразумевается, что у нас есть массив (пусть будет
массив целых чисел (пусть с именем data)) и удаляемое значение
(целочисленное число (пусть с именем delValue)).
Рассуждения. Если алгоритм, который необходимо реализовать, будет
написан верно, то он будет верно работать на
конкретных данных. Поэтому
рассмотрим в начале конкретные данные. Пусть массив будет заполнен
числами 2,4,2,8,2,2,3,7. И надо удалить элементы, равные 2.
Запишем массив в виде таблицы, в первой строке которой будут написаны
значения элементов, а во второйиндексы элементов (напомним, что для того,
что бы обратиться к элементу массива, необходимо написать
имяМассива[индекс]).
Массив
data до удаления:
2
4 2 8 2 2 3 7
0
1 2 3 4 5 6 7
Для сокращения записи в дальнейшем будем писать массив в следующем
виде: элементМассива (индексЭлемента), т. е. {2(0), 4(1), 2(2), 8(3), 2(4), 2(5),
3(6), 7(7)}.
Для того, что бы определить, надо удалять элемент или нет, его
необходимо сравнить с удаляемым значением. Очевидно, что элементов,
которые равны удаляемому значению, может быть несколько. И заранее не
известно сколько их. Поэтому это указывает
на то, что необходимо
использовать цикл. В псевдокоде алгоритм удаления выглядит следующим
образом:
Для каждого элемента массива
Начало действия
Если текущий элемент равен удаляемому, то
НачалоЕсли
Удалить текущий элемент
ОкончаниеЕсли
Окончание действия.
С учетом фразы «Для каждого элемента массива» в решении появится
цикл for (int i = 0; i < data.Length; i++) {…}. Так же учтем, что алгоритм
удаления элемента по индексу нам уже известен. Поэтому уточним алгоритм на
псевдокоде
Для каждого индекса от 0 до размер массива - 1
Начало действия
Если элемент с текущим индексом равен удаляемому, то
НачалоЕсли
Удалить элемент по текущему индексу.
ОкончаниеЕсли
Окончание действия.