- Удалить из массива все элементы между k-м и z-м элементами.
Рассмотрим задачу о массиве имеющего n=10, k=3, z=7(т.е. надо удалить элементы между третьим и седьмым). Пусть переменная d - количество удаляемых элементов. Значение d можно вычислить по формуле d = z-k-1( в нашем примере d=7-3-1).
a[1] |
a[2] |
a[3] |
a[4] |
a[5] |
a[6] |
a[7] |
a[8] |
a[9] |
a[10] |
1 |
3 |
9 |
1 |
0 |
1 |
3 |
2 |
7 |
2 |
|
^ |
|
^ |
|
^ | ||||
a[k] |
a[z] |
a[n] |
a[1] |
a[2] |
a[3] |
a[4] |
a[5] |
a[6] |
a[7] |
1 |
3 |
9 |
3 |
2 |
7 |
2 |
|
^ |
^ |
|
^ | ||
a[k] |
a[z] |
a[n] |
После удаления n стало меньше на d (в нашем примере на 3).
Общий алгоритм решения:
1. Сдвинуть элементы вперед на d элементов, начиная с z-го.
2. Уменьшить n на d.
Фрагмент программы:
var k : integer; {индекс элемента, после которого удаляем}
d : integer; {количество удаляемых элементов}
...
begin
...
d := z-k-1; { вычисляем количество удаляемых элементов}for i :=z to n do
A[i-d]:=A[i]; { cдвигаем элементы}
Dec(n,d); {уменьшаем n на d}
…
<<Назад 1 | 2 |