Как вставить элемент в массив паскаль
Перейти к содержимому

Как вставить элемент в массив паскаль

  • автор:

 

Вставка и удаление элемента в массив

массива). Текущее количество элементов массива находится в переменной n.

Перед вставкой очередного элемента проверяем, что текущее количество элементов массива меньше, чем его емкость.

Далее проверяем, вставляется ли элемент в конец массива или нет. Если элемент вставляется в конец массива, то увеличиваем n на единицу и добавляем элемент. Иначе сдвигаем элементы массива индекс которых больше или равен индексу вставляемого элемента, рисунок 3.

Как вставить элемент в массив паскаль

var dlina: array [1..3] of integer; begin dlina[1]:=500; dlina[2]:=400; dlina[3]:=150; .

const a:array[1..4] of integer = (1, 3, 2, 5);

заполнение массива

var a: array of integer; var n:=readInteger; a:=new integer[n];

begin var a: array of integer; a := new integer[3]; a[0] := 5; a[1] := 2; a[2] := 3; end.

begin var a: array of integer; a := new integer[3](5,2,3); print(a) end.

ввод массива с клавиатуры

var a: array[1..5] of integer; i: integer; begin a[1]:=2; a[2]:=4; a[3]:=8; a[4]:=6; a[5]:=3; writeln(‘Массив A:’); for i := 1 to 5 do write(a[i]:2); end.

for var i:=0 to a.Length-1 do a[i] += 1;

foreach var x in a do Print(x)

Функция Random в Pascal

var f: array[1..10] of integer; i:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); write(f[i],’ ‘); end; end.

var x: real; . x := random(0.0,1.0);;

var i:integer; f:array[0..19]of integer; begin f[0]:=1; f[1]:=1; for i:=2 to 19 do begin f[i]:=f[i-1]+f[i-2]; writeln(f[i]) end; end.

Максимальный (минимальный) элемент массива

максимальный элемент по номеру

// … var (min, minind) := (a[0], 0); for var i:=1 to a.Length-1 do if a[i]<min then (min, minind) := (a[i], i); Result := (min, minind);

// … var (min, minind) := (real.MaxValue, 0); for var i:=0 to a.Length-1 do if a[i]<min then (min, minind) := (a[i], i); Result := (min, minind);

begin var a := new integer[5]; a := arrRandomInteger(5); // [86,37,41,45,76] print(a.Min,a.IndexMin); // 37 1 end.

begin var a := new integer[10]; a := arrRandomInteger(5,0,5); //[1,3,5,4,5] print(a.IndexOf(3)) // 1 end.

begin var a := new integer[10]; a := arrRandomInteger(5,0,5); //[1,3,5,4,5] print(a.Contains(3)); // True print(3 in a)// True end.

  • начать с 1-го элемента ( i:=1 );
  • если очередной элемент ( A[i] ) равен X , то закончить поиск иначе перейти к следующему элементу.

Поиск элемента в массиве

циклический сдвиг

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

// … var v := a[0]; for var i:=0 to a.Length-2 do a[i] := a[i+1]; a[a.Length-1] := v;

// … var v := a[a.Length-1]; for var i:=a.Length-1 downto 1 do a[i] := a[i-1]; a[0] := v;

реверс массива

перестановка элементов массива

begin var a: array of integer := (1,3,5,7); var n := a.Length; for var i:=0 to n div 2 — 1 do Swap(a[i],a[n-i-1]); End.

begin var a:=new integer[10]; a:=arrRandomInteger(10); print(a);// [41,81,84,63,12,26,88,25,36,72] Reverse(a); print(a) //[72,36,25,88,26,12,63,84,81,41] end.

Пример: найти в массиве элементы, удовлетворяющие некоторому условию (например, отрицательные), и скопировать их в другой массив
выбор элементов массива

сохранение элементов массива в другой

// . for var i := 0 to a.length — 1 do if a[i] < 0 then begin b[j] := a[i]; j += 1; end; SetLength(b, j);

  • В таком типе сортировок массив представляется в виде воды, маленькие элементы — пузырьки в воде, которые всплывают наверх (самые легкие).
  • При первой итерации цикла элементы массива попарно сравниваются между собой:предпоследний с последним, пред предпоследний с предпоследним и т.д. Если предшествующий элемент оказывается больше последующего, то производится их обмен.
  • При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой. Значит, число сравнений будет на одно меньше. То же самое касается каждой последующей итерации.

сортировка методом пузырька

for i:=1 to N-1 do begin for j:=N-1 downto i do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; end; end;

for var i := 0 to arr.High — 1 do for var j := arr.High — 1 downto i do if arr[j] > arr[j + 1] then Swap(arr[j], arr[j + 1]);

  • в массиве ищется минимальный элемент и ставится на первое место (меняется местами с A[1]);
  • среди оставшихся элементов также производится поиск минимального, который ставится на второе место (меняется местами с A[2]) и т.д.

сортировка методом вставки

for i := 1 to N-1 do begin min:= i ; for j:= i+1 to N do if A[j] < A[min] then min:=j; if min <> i then begin c:=A[i]; A[i]:=A[min]; A[min]:=c; end; end;

Name already in use

pascalabcnet.github.io / pages / mydoc / progr_arrays.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

1 contributor

Users who have contributed to this file

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Методы и операции для работы с массивами

Объявление и выделение памяти

Заполнение случайными числами

Циклы по массиву

For

Foreach

Foreach по индексам

Foreach по определённым индексам

Задача. Инвертировать массив

Решение 1. Алгоритм

Решение 2. С помощью срезов

Решение 3. С помощью стандартной процедуры

Задача. Есть ли в массиве a элемент x

Решение. С помощью операции in или метода Contains:

Задача. Найти индекс первого вхождения элемента x

Решение 1. С использованием break

Решение 2. Без использования break

Решение 3. Поиск с барьером

Добавим в конец массива барьер, равный x. В массиве должно быть место под этот элемент

За счет использования барьера экономится одна операция сравнения

Решение 4. Стандартные методы

Поиск по условию

Задача. Поиск по условию

Решение 1. Алгоритм

Решение 2. С помощью стандартного метода

Количество по условию

Задача. Количество элементов, удовлетворяющих заданному условию

Решение 1. Алгоритм

Решение 2. С помощью стандартного метода

Задача. Найти минимальный элемент и его индекс

Решение 1. Алгоритм

Решение 2. С помощью стандартной функции

Задача. Найти минимальный элемент, удовлетворяющий условию, и его индекс

Решение. Алгоритм

Задача. Сдвиг влево на 1

Решение 1. Алгоритм

Решение 2. С помощью срезов

Задача. Сдвиг вправо

Решение 1. Алгоритм

Решение 2. С помощью срезов

Задача. Циклический сдвиг вправо

Решение 1. Алгоритм

Решение 2. С помощью срезов

Задача. Циклический сдвиг влево на k

Решение 1. С помощью срезов

Решение 2. С помощью частичного Reverse

Задача. Требуется преобразовать элементы массива по правилу $$x -&gt; f(x)$$

Решение 1. Алгоритм

Решение 2. С помощью стандартного метода

Для преобразования части элементов:

Задача. Слияние двух упорядоченных массивов в один упорядоченный

В массивах должно быть место под один барьерный элмент

Задача. Поиск в упорядоченном массиве

Решение 1. Алгоритм

Асимптотическая сложность $$\Theta(\log n)$$

Решение 2. С помощью стандартного метода

С использованием срезов:

Асимптотическая сложность $$\Theta(n^2)$$

Асимптотическая сложность $$\Theta(n^2)$$

С флагом (эффективнее в ситуациях, когда массив частично отсортирован):

Асимптотическая сложность $$\Theta(n^2)$$ в среднем и $$\Theta(n)$$ ) в лучшем случае (когда массив отсортирован).

Асимптотическая сложность $$\Theta(n^2)$$

Асимптотическая сложность $$\Theta(n \cdot \log n)$$

Методы и операции для работы cо списками List

Список List<T> – это динамический массив с возможностью динамического изменения размеров по ходу работы программы.

Добавление элементов в конец списка:

Операции со списками:

Реализация функции Distinct

Задача. Реализовать функцию Distinct , по заданному массиву возвращающая список только различных элементов массива

Решение. Алгоритм

Вставка и удаление элементов в массиве и списке

Задача. Дан массив (список) $$N$$ вещественных. Требуется вставить элемент $$x$$ на $$k$$ -тое место (начиная с 0), $$k \leq N$$ .

Решение. В массиве — с помощью срезов:

Решение. В списке — с помощью стандартного метода:

Задача. Дан массив (список) $$N$$ вещественных. Требуется удалить элемент с индексом $$k$$ , $$k

Вставка элемента в массив паскаль. Вставка и удаление элемента в массив. Использование подпрограмм для работы с массивами

Вставка и удаление элементов Алгоритм удаления элемента: определить номер удаляемого элемента — k (ввести с клавиатуры или найти из каких-то условий) сдвинуть все элементы начиная с k -ого на 1 элемент влево последнему элементу массива присвоить значение 0 При удалении элемента размер массива не меняется! Поэтому необходимо далее в программе указывать не до n , а до n -1.

Элемент который нужно удалить дан массив А: 3 5 6 8 12 15 17 18 20 25 k:=4 3 5 6 12 15 17 18 20 25 25 3 5 6 12 15 17 18 20 25 0

const n= 30; var a: array of integer; k, i: integer; begin <ввод массива и k >. for i:= k to n-1 do a[i] := a; a[n] := 0; writeln( Результат: ); for i:= 1 to n-1 do write (a[i] :3); readln; end .

Алгоритм вставки элемента: (после k -ого) первые k элементов остаются без изменений все элементы, начиная с k -ого сдвигаются на 1 позицию назад на место (k +1)-ого элемента записываем новый элемент. Массив из n элементов, в который вставляется k элементов необходимо определять как массив, имеющий размер n + k . Вставка перед элементом отличается только тем, что сдвигаются все элементы, начиная с k -ого и на место k -ого записываем новый

дан массив А: k:=4 3 5 6 8 8 12 15 17 18 20 25 3 5 6 8 100 12 15 17 18 20 25 1 2 3 4 5 6 7 8 9 10 3 5 6 8 12 15 17 18 20 25 позиция для добавления нового элемента

Пример: Вставить 100 после элемента номер которого вводится с клавиатуры: const n= 30; var a: array of integer; k, i: integer; begin < ввод массива и k>. for i:= n downto k+1 do a := a[i]; a := 100; writeln( Результат: ); for i:= 1 to n+1 do write (a[i] :3); readln; end .

По теме: методические разработки, презентации и конспекты

«Одномерные массивы: решение задач на добавление и удаление элемента»

Конспект урока разработан для учащихся 10 классов изучающих язык программирования Pascal. В конспекте подробно на примерах объясняется, как можно добавить и удалить элементы в одномерном ма.

Конспект урока по информатике на тему: Технология ввода текста. Редактирование текста: вставка, удаление и замена символов; вставка и удаление пустых строк. Цель урока: научить техноло.

Схема конспекта урока «Одномерные массивы. Ввод и вывод одномерного массива»

Предмет «Информатика» Класс 9 Тема урока «Одномерные массивы. Ввод и вывод одномерного массива»Тип урока: комбинированныйОборудование: компью.

Работа с элементами одномерного массива

Цель урока:формировать и развивать предметные и ключевые компетенции;расширять представление о зоне применения одномерных массивов;повышать культуру написания программ;прививать навыки структурировани.

Вставка и удаление в массиве

Основным достоинством массива является прямой доступ к его элементам: для использования элемента нужно указать только имя массива и индекс (или индексы), которые преобразуются в физический адрес элемента. Скорость доступа не зависит от положения элемента в структуре.

Недостаток связан с операциями вставки и удаления элементов. Допустим, одномерный массив arrTable используется для хранения в своих элементах полезной информации, причем содержат информацию только начальные элементы, число которых равно Count. Эти «занятые» элементы называются активными , активные элементы имеют индексы в диапазоне . Очевидно, LastIndex = Count — 1. Если, например, в массив нужно вставить новую информацию в элемент с индексом ind, то все элементы с индексами, начиная с ind и до конца активной части, потребуется переместить на одну позицию, чтобы освободить место под вставляемый элемент NewElement. Эта операция может быть описана следующим фрагментом:

For i:= LastIndex DownTo indDo

 

arrTable := arrTable [i];

Сдвиг части элементов означает их физическое перемещение в памяти. Логическая схема операции вставки показана на рисунке 5.4

Рисунок 5.4 — Вставка в вектор нового элемента: а — до вставки, б — после вставки

Объем памяти, который будет затронут при вставке нового элемента, зависит от значения n и количества сдвигаемых элементов. Время, требуемое на выполнение вставки, зависит от числа активных элементов в массиве: чем больше это количество, тем больше (в среднем) потребуется времени на сдвиг.

Тот же ход рассуждений справедлив и для операции удаления активного элемента из вектора. В случае удаления элемента с индексом ind, все элементы, начиная с элемента arrTable, должны быть перенесены на одну позицию к началу вектора, чтобы «закрыть» образовавшуюся от удаления элемента «дыру». Логическая схема операции удаления приводится на рисунке 5.5. Программный фрагмент удаления может иметь вид:

For i:= ind + 1 To LastIndexDo

arrTable := arrTable [i];

Таким образом, можно сделать вывод: операции вставки и удаления в массиве выполняются медленнее при увеличении количества элементов.

Другой важный недостаток массива связан с фиксацией его размеров. Если необходимо вставить новый элемент в статический массив, который полностью заполнен активными элементами, то произойдет ошибка времени выполнения. Решением проблемы является использование динамического массива, однако приходится все время контролировать текущее число элементов и применять процедуру SetLength при вставке в полностью заполненный массив.

Тема урока: «Вставка и удаление элементов массива».

Предмет: Информатика и ИКТ.

Класс: 10 (профиль).

Ключевые слова: информатика, практическая работа, программирование, массивы, вставка, удаление элементов.

Тип урока: практическая работа.

Оборудование: Раздаточный материал; персональные компьютеры.

Попов В.Б. Turbo Pascal для школьников: Учебн. пособие — 3-е доп. изд. – М.: Финансы и статистика, 2004, — 528 с.: ил.

Семашко Г.Л., Салтыков А.И. «Программирование на языке паскаль», М: «Наука», 1993 г.

ФароновВ. В. « Turbo Pascal 7.0. Начальный курс», М: «Нолидж», 1997 г.

Цель работы:

разобрать принципы вставки и удаления элементов в одномерных и двумерных массивах,

закрепить полученные знания, путем решения задач.

Время выполнения: 2 урока.

I . Удаление элементов из массива.

Одномерный массив

Двумерный массив

Дан массив A (N ). Удалить элемент, расположенный на месте k .

Дан массив B (N ,M ). Удалить столбец с номером k . (аналогично для удаления строки)

Описание способа удаления:

Сдвинуть весь «хвост» массива, начиная с элемента с номером k +1, на одну позицию влево, т.е. выполняя операцию: a i =a i +1 , где i = k , k +1, …, N -1

Полученный массив будет содержать N -1 элемент.

Сдвинуть все столбцы, начиная с k +1 по m на одну позицию влево, выполнив операции:

Для j от 1 до m -1 делать

a i , j =a i , j +1

Дано: 3 5 7 8 9 N=5, k=2

Операции: a 2 :=a 3 ; a 3 :=a 4 ; a 4 :=a 5

Дано: N =3, M =4, k =2 Операции: Результат:

1 5 2 7 a 1,2:=a 1,3 ; a 1,3:=a 1,4 ;

8 4 3 5 a 2,2:=a 2,3 ; a 2,3:=a 2,4 ;

0 9 1 4 a 3,2:=a 3,3 ; a 3,3:=a 3,4 ;

Writeln (‘Введите количество элементов’);

Writeln (‘Введите № удаляемого элемента’);

For i:=1 to n do begin

For i:=k to n-1 do

For i:=1 to n-1 do

writeln(» Введитекол- вострокистолбцов»);

writeln(» Введите № удаляемогостолбца»);

for i:=1 to n do begin

for j:=1 to m do begin

for j:=k to m-1 do

for i:=1 to n do begin

for j:=1 to m-1 do begin

В одномерном массиве A (N ) найти min элемент и удалить его.

В двумерном массиве B (N ,M ) удалить строку с номером k . При этом выполнить проверку: не превышает ли значение k количества строк массива B .

II . Вставка (включение) элементов в массив.

Одномерный массив

Двумерный массив

Дан массив A (N ). Включить на k место в этом массиве элемент, равный m .

Дан массив B (N ,M ). Добавить столбец с номером k . Элементы нового столбца равны элементам массива C (N ).(аналогично для добавления строки)

Описание способа удаления:

Перед включением заданного элемента в массив, необходимо раздвинуть этот массив, т.е. передвинуть «хвост» массива вправо на одну позицию, т.е. выполняя операцию: a i +1 =a i , где i = N , N -1, …, k . Перемещение элементов массива начинаем с конца, в противном случае весь хвост массива заполнится k -ым элементом.

Размер массива увеличится до N +1 элемента.

Сдвинуть все столбцы, начиная с m по k на одну позицию вправо, выполнив операции:

для j от m до k делать

Перебрать все строки с 1 по n , выполнив

a i , j +1 =a i , j

Затем в i =1-ой по n строках a i , k :=c i

В новом массиве будет M -1 столбец.

Важно: при добавлении столбца (строки) в двумерный массив, элементы этого столбца (строки) берутся из дополнительного одномерного массива размером = кол-ву строк двумерного массива (=кол-ву столбцов) либо вводятся с клавиатуры.

Дано: 3 8 7 6 5 N=5, k=2, m=4

Операции: a 6 :=a 5 =5; a 5 :=a 4 =6; a 4 :=a 3 =7; a 3 :=a 2 =8

Итог: 3 4 8 7 6 5

Дано: N =3, M =4, k =3 Операции: Результат:

C(N)= <6,8,2>a 1,5:=a 1,4 ; a 1,4:=a 1,3 ;

1 5 2 7 a 2,5:=a 2,4 ; a 2,4:=a 2,3 ;

8 4 3 5 a 3,5:=a 3,4 ; a 3,4:=a 3,3 ;

Var a:array of integer;

Writeln(» Введите № включаемогоэлемента»);

Writeln («Введите значение включаемого эл-та»);

For i:=1 to n do begin

For i:=n downto k do

For i:=1 to n+1 do

var b:array of real; i,j,m,n,k:byte;

writeln («Введите кол-во строк и столбцов»);

writeln («Введите № добавляемого столбца»);

for i:=1 to n do begin

for j:=1 to m do begin

for i:=1 to n do begin

end; writeln; writeln;

for j:=m downto k do

for i:=1 to n do begin

for j:=1 to m+1 do begin

Задачи для самостоятельного решения:

В одномерном массиве A (N ) найти max элемент и вставить за ним элемент равный 2*max .

В двумерном массиве B (N ,M ) вставить k -ую строку элементов массива C (M ). При этом выполнить проверку: не превышает ли значение k количества строк массива B .

Когда нужно произвести какие-то изменения в массиве, метод JavaScript splice может прийти на помощь. Он позволяет осуществлять вставку, удаление и замену элементов в массиве JavaScript .

Рассмотрим аргументы, передаваемые в метод splice() .

Array.splice (start_index, number_of_elements_to_remove) :

  • start_index — индекс в массиве, с которого начинается вставка или удаление элементов;
  • number_of_elements_to_remove — задает количество элементов, которое необходимо удалить, начиная со star_index .

Все элементы, следующие за number_of_elements_to_remove , будут вставлены в массив, начиная с start_index . Они могут быть любого типа, включая строки, числа, булевы значения, объекты, функции, NULL , undefined , и т.д.

Для более детального изучения параметров метода Array.prototype.splice() Javascript воспользуйтесь MDN .

Давайте начнем с простого примера, демонстрирующего, как вставить число в массив с помощью метода Array.splice() .

Представьте, что у нас есть массив , и мы хотим вставить в него 2 между 1 и 3 . Пример реализации:

var my_array = ; var start_index = 1; var number_of_elements_to_remove = 0; my_array.splice(start_index, number_of_elements_to_remove, 2); console.log(my_array); //;

Обратите внимание, что JavaScript array splice воздействует непосредственно на массив. Таким образом, вызванный my_array метод splace() вместо того, чтобы вернуть новый массив, обновит my_array .

Пример удаления элемента из массива в JavaScript :

var my_array = [«a»,»b»,»c»,»k»,»d»]; var start_index = 3 var number_of_elements_to_remove = 1; var removed_elements = my_array.splice(start_index, number_of_elements_to_remove); console.log(removed_elements); //[«k»] console.log(my_array); //[«a»,»b»,»c»,»d»];

Обратите внимание, что в этом примере метод Array.splice() возвращает массив из удаленных элементов.

Взглянем на пример замены элементов в массиве JavaScript с помощью метода splice JavaScript :

var my_array = [«бейсбол», «баскетбол», «теннис», «гольф»]; var start_index = 1 var number_of_elements_to_remove = 2; var removed_elements = my_array.splice(start_index, number_of_elements_to_remove, «бокс», «боулоинг», «волейбол»); console.log(removed_elements); //[«теннис», «гольф»] console.log(my_array); //[«бейсбол», «бокс», «боулинг», «волейбол», «гольф»];

Приведенный выше пример заменяет «баскетбол » и «теннис » на «бокс «, «боулинг » и «волейбол «. Он может показаться немного запутанным из-за всех проведенных операций. Разберем все операции шаг за шагом. Для начала мы сообщаем методу splace() начальную позицию my_array . Затем number_of_elements_to_remove задаем 2, поэтому метод удаляет my_array и my_array . И, наконец, начиная со start_index my_array , вставляем в массив my_array элементы.

Метод JavaScript splace хорош, когда нужно вставить или удалить значения из массива t . Если массив уже отсортирован, метод splace() подходит, чтобы явно расположить новые значения в массиве. Он также хорошо работает, когда нужно удалить значения из массива по индексу. Обратите внимание на то, что метод splace() действует непосредственно на массив и возвращает только те значения, которые были удалены или вырезаны из массива.

Перевод статьи “ Insert, Remove, and Replace elements with Array.splice() ” был подготовлен дружной командой проекта .

место пятого — шестой.

Таким образом, все элементы с третьего по пятый надо переместить влево на один — на место i -го элемента нужно записать (i+1) -й. Блок-схема алгоритма представлена на рис. 5.25 .

Теперь рассмотрим более общую задачу: необходимо удалить m -й элемент из массива X , состоящего из n элементов. Для этого достаточно записать элемент (m+1) -й на место элемента c номером m, (m+2) -й элемент — на место (m+1) -го и т. д., n -й элемент — на место (n–1) -го. Процесс удаления элемента из массива представлен на рис. 5.26 .

Алгоритм удаления из массива Х размерностью n элемента с номером m приведён на рис. 5.27 .

После удаления элемента 4 А фактически сдвига части массива на один элемент влево из массива изменится количество элементов в массиве (уменьшится на один), и у части элементов изменится индекс . Если элемент удалён, то на место него приходит следующий, передвигаться к которому (путём увеличения индекса на один) нет необходимости. Следующий элемент сам сдвинулся влево после удаления.

Если обрабатывается массив , в котором часть элементов удаляется, то после удаления элемента не надо переходить к следующему (при этом уменьшается количество элементов). В качестве примера рассмотрим следующую задачу.

ЗАДАЧА 5.1. Удалить из массива отрицательные элементы.

Алгоритм решения задачи довольно прост: перебираем все элементы массива, если элемент отрицателен, то удаляем его путём сдвига всех последующих на один влево. Единственное, о чём стоить помнить, — что после удаления элемента не надо переходить к следующему для последующей обработки, он сам сдвигается на место текущего. Блок-схема решения задачи 5.1 представлена на рис. 5.28 .

Ниже представлен текст программы с комментариями.

program upor_massiv; var i, n, j: byte; X: array [ 1.. 100 ] of real; begin writeln (’введите размер массива ’); readln (n); <Ввод массива.>for i:=1 to n do begin write (’X[ ’, i, ’ ]= ’); readln (X[ i ]); end; writeln (’массив X ’); for i:=1 to n do write (x [ i ] : 5: 2, ’ ’); writeln; i: = 1; while (i При описании массива необходимо предусмотреть достаточный размер для вставки одного элемента. .

var i, n,m: byte; X: array [ 1.. 100 ] of real; b: real; begin writeln (’N= ’); readln (n); for i:=1 to n do begin write (’X[ ’, i, ’ ]= ’); readln (X[ i ]); end; writeln (’Массив X ’); for i:=1 to n do write (x [ i ] : 5: 2, ’ ’); writeln; writeln (’m= ’); readln (m); writeln (’ b= ’); readln (b); for i:=n downto m+1 do x [ i +1]:=x [ i ]; x :=b; n:=n+1; writeln (’Изменённый массив ’); for i:=1 to n do write (X[ i ] : 5: 2, ’ ’); writeln; end.

5.10 Использование подпрограмм для работы с массивами

Рассмотрим, как можно передавать массивы в подпрограмму. Как известно (см. главу 4), чтобы объявить переменные в списке формальных параметров подпрограммы, необходимо указать их имена и типы. Однако типом любого параметра в списке может быть только стандартный или ранее объявленный тип. Поэтому для того, чтобы передать в подпрограмму массив , необходимо вначале описать его тип 6 Тип данных массива, объявление массива см. в п. 2.4.9. Подробно работа с массивами описана в данной главе. , а затем объявлять процедуру:

тип_массива = array [ список_индексов ] of тип;

type vector=array [ 1.. 10 ] of byte; matrica=array [ 1.. 3, 1.. 3 ] of real; procedure proc (A: matrica; b: vector; var x: vector);

Понятно, что передача в подпрограмму строки вида

имя_переменной: string [ длина_строки ];

которая фактически является массивом 7 Тип данных «строка», объявление строки см. в п. 2.4.9 , должна осуществляться аналогично:

тип_строки = string [ длина_строки ];

имя_процедуры(имя_строки: тип_ строки);

type stroka_5=string [ 5 ]; stroka_10=string [ 1 0 ]; function fun (S t r: stroka_5) : stroka_10;

Массивы в подпрограмму можно передавать, используя понятие открытого массива. Открытый массив — это массив 8 Тип данных «массив», объявление массива, обращение к массиву см. в п. 2.4.9. , при описании которого указывается тип элементов, из которых он состоит, но не определяются границы изменения индексов:

имя_открытого_массива: array of array of. тип;

var massiv_1: array of real; massiv_2: array of array of char; massiv_3: array of array of array of byte;

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *