Відмінності між версіями «Вставка елементов в одномерных масивах»

Матеріал з Iteach WIKI
Перейти до: Навігація, пошук
Рядок 19: Рядок 19:
  
 
Type
 
Type
  MyArray = array[1..n+1] of integer
+
MyArray = array[1..n+1] of integer
 
Кроме того, в программе необходимо выводить массив два раза, сначала первые N элементов массива, а затем полный массив из N+1 элемента.
 
Кроме того, в программе необходимо выводить массив два раза, сначала первые N элементов массива, а затем полный массив из N+1 элемента.
  
Рядок 33: Рядок 33:
 
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
 
Var
  A : MyArray;
+
A : MyArray;
  k, x : Integer;
+
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;
+
i : integer;
 
Begin
 
Begin
  for i := n downto Mesto+1 do
+
for i := n downto Mesto+1 do
    m[i+1] := m[i];
+
m[i+1] := m[i];
  m[Mesto+1]:= Element;
+
m[Mesto+1]:= Element;
  Inc(n);
+
Inc(n);
 
End;
 
End;
  
 
Begin
 
Begin
  Writeln('Номер элемента, после которого вставлять > ');
+
Writeln('Номер элемента, после которого вставлять > ');
  Readln(k);
+
Readln(k);
  Writeln('Вставляемое число > ');
+
Writeln('Вставляемое число > ');
  Readln(x);
+
Readln(x);
  Insert1(A, n, k, 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.