2. уменьшении количества элементов массива n на количество удаляемых элементов.
Пример исходного массива A:
-5
Массив после удаления первого элемента:
-5
Сдвиг элементов выполняется так:
1. Начиная с удаляемого элемента, копируем содержимое элемента, стоящего правее в текущий элемент: A[i]:=A[i+1].
2. Переходим к следующему элементу вправо: i:=i+1.
3. Заканчиваем сдвиг, когда i=n-1, так как i+1 при i=n-1 равен n.
Фрагмент программы:
…………………………….
{1 - сдвигаем элементы на одну позицию вправо}
{вначале i:=1, потому что надо удалить 1-ый элемент}
for i:=1 to n-1 do
A[i]:=A[i+1];
{2 - уменьшаем количество элементов в массиве}
n:=n-1;
…………………………….
Пример 10: Удалить из массива максимальный элемент массива.
Для этого надо:
1. Найти индекс максимального элемента.
2. Удалить элемент с найденным индексом.
Пример исходного массива A:
-5
Массив после удаления максимального элемента:
-5
Фрагмент программы:
Var {дополнительные переменные}
imax:IndexEl; {индекс максимального элемента}
…………………………….
Begin
…………………………….
{1 - ищем индекс максимального элемента массива}
imax:=1; {вначале imax указывает на первый элемент}
{в цикле начиная со 2-го элемента}
for i:=2 to n do
{сравниваем i-ый элемент с максимальным на текущий момент времени, и если i-ый элемент больше максимального, то максимальным становится i-ый элемент}
if A[i]>A[imax] then imax:=i;
{2 - удаляем элемент массива с индексом imax}
for i:=imax to n-1 do
A[i]:=A[i+1];
dec(n); {уменьшаем n на 1}
…………………………….
Замечание: в ТР имеются процедуры увеличения и уменьшения
переменной целого типа.
Inc - увеличение значения переменной.
Вид вызова для целого X
Inc(x); x:=x+1;
Inc(x,n); x:=x+n;
где x - переменная целого типа;
n - целочисленное выражение.
В первом случае переменной x присваивается следующее значение (например, x была равна 10, тогда после выполнения inc(x) x равна 11). Таким образом, можно сказать, что запись inc(x) эквивалентна записи x:=x+1.
Можно также сказать, что запись inc(x,n) эквивалентна записи x:=x+n.