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