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

Матеріал з Iteach WIKI
Перейти до: Навігація, пошук
(Створена сторінка: Вставлять элемент можно до или после данного элемента, номер этого элемента можно ввод...)
 
 
(не показано 8 проміжних версій цього учасника)
Рядок 7: Рядок 7:
 
на место (k+1)-го элемента записываем значение х;
 
на место (k+1)-го элемента записываем значение х;
 
увеличиваем количество элементов в массиве на единицу.
 
увеличиваем количество элементов в массиве на единицу.
[['''Задача.''']] Вставить число 100 после пятого элемента массива.
+
 
 +
'''Задача.''' Вставить число 100 после пятого элемента массива.
  
 
Рассмотрим конкретный пример. Пусть задан следующий одномерный массив из N (N=10) элементов:
 
Рассмотрим конкретный пример. Пусть задан следующий одномерный массив из N (N=10) элементов:
Рядок 17: Рядок 18:
 
3, -12, 5, 14, 27, 100, -6, 1, -34, 10, -15.
 
3, -12, 5, 14, 27, 100, -6, 1, -34, 10, -15.
 
Таким образом, в массиве стало 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
+
 
  n=10;  
+
'''Const'''
Type
+
 
  MyArray = array [1..n+1] of integer;
+
'''n=10;'''
Var
+
 
  A : MyArray;
+
'''Type'''
  k, x : Integer;
+
 
 +
'''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('Номер элемента, после которого вставлять > ');'''
  
Procedure InsertMas1(Var m : MyArray; n : integer);
+
'''Readln(k);'''
  . . .
+
  
Procedure InsertMas2(Var m : MyArray; n : integer);
+
'''Writeln('Вставляемое число > ');'''
  . . .
+
  
Procedure PrintMas(m : MyArray; n : integer);
+
'''Readln(x);'''
  . . .
+
  
Procedure Insert1(Var m : MyArray; Var n : integer; Mesto, Element : integer);
+
'''Insert1(A, n, k, x);'''
Var
+
  i : integer;
+
Begin
+
  for i := n downto Mesto+1 do
+
    m[i+1] := m[i];
+
  m[Mesto+1]:= Element;
+
  Inc(n);
+
End;
+
  
Begin
+
'''End.'''
  . . .
+
  Writeln('Номер элемента, после которого вставлять > ');
+
  Readln(k);
+
  Writeln('Вставляемое число > ');
+
  Readln(x);
+
  Insert1(A, n, k, x);
+
  . . .
+
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.