Відмінності між версіями «Вставка елементов в одномерных масивах»
| Рядок 19: | Рядок 19: | ||
Type | Type | ||
| − | + | MyArray = array[1..n+1] of integer | |
Кроме того, в программе необходимо выводить массив два раза, сначала первые N элементов массива, а затем полный массив из N+1 элемента. | Кроме того, в программе необходимо выводить массив два раза, сначала первые N элементов массива, а затем полный массив из N+1 элемента. | ||
| Рядок 33: | Рядок 33: | ||
Program Vstavka1; | Program Vstavka1; | ||
Const | Const | ||
| − | + | n=10; | |
Type | Type | ||
| − | + | MyArray = array [1..n+1] of integer; | |
Var | Var | ||
| − | + | A : MyArray; | |
| − | + | k, x : Integer; | |
Procedure InsertMas1(Var m : MyArray; n : integer); | Procedure InsertMas1(Var m : MyArray; n : integer); | ||
| Рядок 48: | Рядок 48: | ||
Procedure Insert1(Var m : MyArray; Var n : integer; Mesto, Element : integer); | Procedure Insert1(Var m : MyArray; Var n : integer; Mesto, Element : integer); | ||
Var | Var | ||
| − | + | i : integer; | |
Begin | Begin | ||
| − | + | for i := n downto Mesto+1 do | |
| − | + | m[i+1] := m[i]; | |
| − | + | m[Mesto+1]:= Element; | |
| − | + | Inc(n); | |
End; | End; | ||
Begin | Begin | ||
| − | + | Writeln('Номер элемента, после которого вставлять > '); | |
| − | + | Readln(k); | |
| − | + | Writeln('Вставляемое число > '); | |
| − | + | Readln(x); | |
| − | + | Insert1(A, n, k, x); | |
End. | End. | ||
Версія за 12:47, 27 лютого 2013
Вставлять элемент можно до или после данного элемента, номер этого элемента можно вводить с клавиатуры или искать по определенному условию.
Пусть k - это номер элемента, после которого мы должны вставить элемент х. Тогда вставка осуществляется следующим образом:
первые k элементов массива остаются без изменения, все элементы, начиная с (k+1)-го, необходимо сдвинуть на один назад, на место (k+1)-го элемента записываем значение х; увеличиваем количество элементов в массиве на единицу. '''Задача.''' Вставить число 100 после пятого элемента массива.
Рассмотрим конкретный пример. Пусть задан следующий одномерный массив из N (N=10) элементов:
3, -12, 5, 14, 27, -6, 1, -34, 10, -15.
Надо вставить 100 после пятого элемента массива, т. е. должен получиться следующий массив:
3, -12, 5, 14, 27, 100, -6, 1, -34, 10, -15. Таким образом, в массиве стало 11 элементов, то есть массив надо определять на N+1 элемент:
Type MyArray = array[1..n+1] of integer Кроме того, в программе необходимо выводить массив два раза, сначала первые N элементов массива, а затем полный массив из N+1 элемента.
Рассмотрите процедуру вставки Insert1(m, n, Mesto, Element), которой передаются:
m - массив, в котором делаем преобразования; n - количество элементов в массиве, Mesto - номер элемента, после которого надо вставить данный, Element - число, которое вставляем.
Кроме того, сдвиг элементов будем начинать с последнего элемента.
Program Vstavka1; Const n=10; Type MyArray = array [1..n+1] of integer; Var A : MyArray; k, x : Integer;
Procedure InsertMas1(Var m : MyArray; n : integer);
Procedure InsertMas2(Var m : MyArray; n : integer);
Procedure PrintMas(m : MyArray; n : integer);
Procedure Insert1(Var m : MyArray; Var n : integer; Mesto, Element : integer); Var i : integer; Begin for i := n downto Mesto+1 do m[i+1] := m[i]; m[Mesto+1]:= Element; Inc(n); End;
Begin Writeln('Номер элемента, после которого вставлять > '); Readln(k); Writeln('Вставляемое число > '); Readln(x); Insert1(A, n, k, x); End.