§ № Удаление элемента массива
Имеется одномерный целочисленный массив из семи элементов:
| i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
| a[i] |
10 |
12 |
5 |
8 |
4 |
15 |
20 |
Каким будет результат преобразования массива по следующему алгоритму?
for i:=k+1 to n do
a[i-1]:=a[i];
Решение
В условии дано , но значение не задано. Поэтому единственного массива с конкретными числами получить нельзя: результат зависит от выбранного индекса .
При команда записывает на место ; при записывает прежнее на место . Так продолжается до . Поскольку цикл идёт слева направо, правый элемент ещё не перезаписан к моменту чтения. Следовательно, элементы с индексами меньше остаются прежними, элемент удаляется из логической последовательности, а все следующие сдвигаются на одну позицию влево.
Например, при сначала , затем , потом и . Получится физический массив : ячейка не меняется, поэтому последнее значение повторяется. Если считать, что элемент действительно удалён, новую логическую длину нужно отдельно уменьшить: . Тогда результат — первые шесть чисел . При тело цикла не выполнится.
Ответ
Алгоритм удаляет элемент с индексом сдвигом следующих элементов влево; без заданного единственного числового результата нет. Например, при в семи ячейках: , логический массив после удаления: .