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