русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вставка элементов в одномерный массив


Дата добавления: 2015-09-15; просмотров: 2325; Нарушение авторских прав


Вставка одного элемента

Вставлять элемент можно до или после данного элемента, номер этого элемента можно вводить с клавиатуры или искать при определённых условиях. Рассмотрим вставку элемента после элемента с данным номером, номер этого элемента будем вводить с клавиатуры.

Вставка элемента после элемента с заданным номером.

Пример

Вставить число 100 после пятого элемента массива.

Решение

Пусть k - это номер элемента, после которого мы должны вставить элемент х (k и х будем вводить с клавиатуры). Тогда вставка осуществляется следующим образом:

первые k элементов массива остаются без изменений;
все элементы, начиная с (k+1)-го, необходимо сдвинуть на один назад;
на место (k+1)-го элемента записываем значение х, то есть после k-го элемента массива.

Рассмотрим на конкретном примере. Пусть дан следующий одномерный массив из 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 элементы. Поэтому будем использовать уже известную процедуру Print1.

Составим теперь основную программу с использованием новой процедуры Insert1 (k1, x1, m), которой передаются: k1 - номер элемента, после которого надо вставить, х1 - число, которое вставляем, m - массив, в котором делаем преобразования. Кроме того, сдвиг элементов будем начинать с последнего элемента.

Program Example_42;
Const n = 10; dd = 51;
Type myarray = Array[1.. n+1] Of Integer;
Var A : myarray;
x, k : Integer; {x - вставляемое число, k - номер элемента, после которого вставляем}



Procedure Init2 (Var m: myarray); {процедура заполнения (инициализации) массива случайными числами}

...

Procedure Print1 (n1: Integer; m: myarray); {процедура вывода (распечатки) массива}

...

Procedure Insert1 (k1,x1: Integer; Var m: myarray);
Var i; Integer;
Begin {сдвиг элементов на одну позицию назад}
For i:=n Downto k1+1 Do
m[i+1]:= m[i]
m[k1+1]:= x1; {вставка элемента на место после k1-го}
End;

Begin
Init2(A);
Print1(n,A) {первый вывод начального массива из n элементов}
Writeln (' Номер элемента, после которого вставлять,');
Writeln ('и вставляемое число');
Readln (k,x); {ввод номера и вставляемого элемента}
Insert1(k,x,A);
Print1(n+1,A); {вывод массива после вставки в него}
Readln;
End.

Рассмотрим выполнение программы по шагам выполнения. Пусть начальное заполнение массива сделано и имеется массив из десяти целых чисел:

3, -12, 5, 14, 27, -6, 1, 34, 10, -15.

Кроме того, пусть первый вывод массива тоже уже сделан и на экране появились 10 целых чисел. Введём номер элемента, после которого будем вставлять новый элемент и сам этот новый элемент:

k = 5 - будем вставлять после пятого элемента;

x = 100 - вставлять будем число 100.

Таблица 3

Сдвиг элементов
i m[1] m[2] m[3] m[4] m[5] m[6] m[7] m[8] m[9] m[10] m[11]
- -12 -6 -15=> -
-12 -6 10=> -15 -15
-12 -6 34=> -15
-12 -6 1=> -15
-12 -6=> -15
-12 -6 -6 -15
на (k1+1)-ое место записываем значение x1 - m[k1+1] := 100
- -12 -6 -15

Итак, получили новый массив, который уже имеет N+1 элемент, его и будем выводить на экран. На экране всё это будет выглядеть следующим образом:

3 -12 5 14 27 -6 1 34 10 -15

Номер элемента, после которого вставлять, и вставляемое число

5 100

3 -12 5 14 27 100 -6 1 34 10 -15

Вставка элемента перед данным

Пример

Вставить число 100 перед пятым элементом массива.

Решение

Эта вставка немногим отличается от предыдущей: в первой сдвигали назад все элементы, стоящие после k-го, то есть с (k+1)-го, а на его место записывали новый элемент, в этой - сдвигаем все элементы с k-го, а затем на его место записываем новый,

Пусть дан следующий одномерный массив из N (N=10) элементов:

3, -12, 5, 14, 27, -6, 1, 34, 10, -15.

Надо вставить 100 перед пятым элементом массива. Тогда получим следующий массив:

3, -12, 5, 14, 100, 27, -6, 1, 34, 10, -15.

Изменим программу для этой вставки:

Program Example_43;
Const n = 10; dd = 51;
Type myarray = Array[1..n+1] Of Integer;
Var A : myarray;
x, k : Integer; {x - вставляемое число; k - номер элемента, после которого вставляем}

Procedure Init2(Var m: myarray); {процедура заполнения (инициализации) массива случайными числами}

Procedure Print1(n1: Integer; m: myarray ); {процедура вывода (распечатки) массива}

Procedure Insert2(k1, x1: Integer; Var m: myarray );
Var i : Integer;
Begin {сдвиг на одну позицию назад}
For i:=n Downto k1 Do
m[i+1]:=m[i];
m[k1]:=x1; {вставка x1 на место k1-го}
End;

Begin
Init2(A);
Print1 (n,A); {первый вывод начального массива }
Writeln ('Номер элемента, перед которым вставлять,');
Writeln (' u вставляемое число ');
Readln (k,x); {ввод номера и вставляемого элемента}
Insert2(k,x,A);
Print1(n+1,A); {выводмассива после вставки в него}
Readln;
End.

Рассмотрим на том же примере пошаговое выполнение программы. Пусть начальное заполнение массива сделано и имеется массив из десяти целых чисел:

3, -12, 5, 14, 27, -6, 1, -34, 10, -15.

Кроме того, пусть первый вывод мвссива тоже уже сделан и на экране появились 10 целых чисел. Введём номер элемента, перед которым будем вставлять новый элемент и сам этот новый элемент:

k = 5 - будем вставлять перед пятым элементом;
x = 100 - вставляемое число 100.

Таблица 4

Сдвиг элементов
i m[1] m[2] m[3] m[4] m[5] m[6] m[7] m[8] m[9] m[10] m[11]
- -12 -6 -15=> -
-12 -6 10=> -15 -15
-12 -6 34=> -15
-12 -6 1=> -15
-12 -6=> -15
-12 27=> -6 -6 -15
-12 -6 -15
на k1-ое место записываем значение x1 - m[k1] := 100
- -12 -6 -15

Итак, получили новый массив, который уже имеет N+1 элемент, его и будем выводить на экран. На экране всё это будем выглядеть следующим образом:

3 -12 5 14 27 -6 1 -34 10 -15

Номер элемента, перед которым вставлять, и вставляемое число

5 100

3 -12 5 14 100 27 -6 1 -34 10 -15



<== предыдущая лекция | следующая лекция ==>
Удаление элемента | Вставка нескольких элементов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.