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

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

  • автор:

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

Author24 — интернет-сервис помощи студентам

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

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

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

Вставка элемента в массив
Есть массив. В цикле находится произведение пар этого массива и сразу заносятся в другой массив. .

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

вставка элемента в одномерный массив
Вставить два элемента с данными значениями:первый-после всех элементов, больше данного числа Р, а.

Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181

Лучший ответ

Сообщение было отмечено Anastasiaya как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
type mas=array[1..100] of integer; procedure vstavka(var a:mas;x,k,n:integer); var i:integer; begin for i:=n downto k+1 do a[i]:=a[i-1]; a[k]:=x; end; var a:mas; n,x,k,i:integer; begin repeat write('Введите размер массива от 3 до 100 n='); readln(n); until n in [3..100]; randomize; writeln('Исходный массив'); for i:=1 to n do begin a[i]:=10+random(80); write(a[i]:4); end; writeln; write('Введите число для вставки x='); readln(x); repeat write('Введите место вставки от 1 до ',n,' k='); readln(k); until k in [1..n]; vstavka(a,x,k,n); writeln('Вставка элемента'); for i:=1 to n do write(a[i]:4) end.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Вставка нового элемента в список, удаление элемента из списка, просмотра содержимого списка
очень нужно:tender: 1. Разработать подпрограммы, реализующие основные операции обработки линейного.

Вставка элемента в упорядоченный массив
Здравствуйте! Помогите пожалуйста решить задачу В одномерный упорядоченный по убыванию.

Вставка элемента в одномерный массив
Добрый вечер. Хотелось бы критики. Имеется массив, задаваемый с помощью randomize, в нём нужно.

Одномерный массив. Вставка элемента.
Задача на одномерный массив: Вставить новый элемент после первого отрицательного элемента. .

Или воспользуйтесь поиском по форуму:

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

Требуется добавить элемент в произвольное место массива.

Алгоритм решения задачи:

  1. Задаем длину массива на один элемент больше, чем он будет заполнен в начале.
  2. Выясняем значение и позицию добавляемого элемента
  3. Все элементы до указанной позиции сдвигаем на один назад.
  4. Присваиваем по указанному индексу (позиции) значение.
  5. Остальная (передняя) часть массива не изменяется.

Программа на языке Паскаль:

const n = 6; var arr: array[1..n] of integer; i, j, num, id: integer; begin writeln('Заполните массив: '); for i := 1 to n - 1 do readln(arr[i]); write('Ваш массив: '); for i := 1 to n - 1 do write(arr[i]:5); writeln; write('Укажите еще один элемент: '); readln(num); write('Позиция в массиве: '); readln(id); for i := n - 1 downto id do arr[i+1] := arr[i]; arr[id] := num; write(' Ваш массив: '); for i := 1 to n do write(arr[i]:5); writeln; end.

Массивы

Задача. Заменить отрицательные элементы на противоположные по знаку. Для этого опишем процедуру. Ей будем передавать параметры — количество элементов в массиве и массив, который будет также и результатом выполнения процедуры, так как некоторые его элементы могут быть заменены.

Procedure Zamena (Var m : MyArray; n:integer);
Var
i : integer;
Begin
for i := 1 to n do
if m[i] < 0
then
m[i] := -m[i];
End;

Нахождение номеров элементов с заданным свойством

Задача. Найти и вывести на экран номера четных элементов. Для решения задачи необходимо просмотреть весь массив, и если просматриваемый элемент является четным, то выводить его номер.

Procedure PoiskChet(m : MyArray; n:integer);
Var
i : integer;
Begin
for i := 1 to n do
if m[i] mod 2 =0
then
Write(i:5);
End;

Нахождение количества элементов с заданным свойством

Задача. Найти количество положительных и отрицательных элементов в данном массиве. Опишем процедуру, которой будем отправлять параметры — массив, количество элементов в массиве и два счетчика, один для элементов, больших нуля, а второй — для отрицательных элементов.

Procedure OtrPol(m : MyArray; n:integer; Var k1, k2 : Integer);
Var
i : integer;
Begin
k1 :=0;
k2 :=0;
for i := 1 to n do
if m[i] > 0
then
Inc(k1)
else
if m[i] < 0
then
Inc(k2);
End;

Есть ли в данном массиве элементы с данным свойством?

Для решения таких задач удобнее использовать циклы с условиями и составлять функции, результат которых имеет логический тип. Задача. Есть ли отрицательный элемент в массиве? Начинаем с первого элемента (i=1). Пока не просмотрен последний элемент (i<=n) и не найден отрицательный (m[i]>=0), будем переходить к следующему (Inc(i)). Таким образом, мы закончим просмотр массива в одном из двух случаев: первый – просмотрели все элементы и не нашли отрицательный, тогда i>n, второй – нашли нужный, при этом i

Function Control (m : MyArray; n:integer) : Boolean;
Var
i : integer;
Begin
i := 1;
while (i<=n) and (m[i]>0) do
Inc(i);
Control := (i<=n);
End;

Массивы

Задача. Вставить число 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 — число, которое вставляем.

Кроме того, сдвиг элементов будем начинать с последнего элемента.

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;

Задание. На основе разобранной задачи самостоятельно напишите программу вставки числа перед некоторым заданным элементом. Дополните программу необходимыми операторами и комментариями и добейтесь работоспособности программы.

Вставка нескольких элементов

Задача. Вставить число после всех элементов массива, кратных трем.

Первое, на что необходимо обратить внимание — это описание массива: на сколько элементов может увеличиться массив? Максимальное количество элементов, после которых будет вставлен новый элемент, совпадает с количеством элементов массива, так как может случиться, что все элементы массива отвечают заданному свойству. Поэтому массив может увеличиться в два раза, а значит, соответствующее ему описание будет следующим:

Type
MyArray[1..2*n] of Integer;

Второе. Если мы будем просматривать массив с начала и вставлять новый после элемента с заданным свойством, то номер последнего элемента каждый раз может меняться, кроме того, будет просматриваться и новый (вставленный) элемент и его необходимо будет пропускать, поэтому решение будет не очень эффективным. Лучше всего просматривать массив, начиная с конца, тогда вставляемый элемент мешать не будет. Кроме того, номер последнего элемента можно будет знать (если знать, сколько элементов вставлено на данный момент), при этом просмотр будет последовательным от N-го до 1-го.

Procedure InsertMas1(Var m : MyArray; n : integer);
. . .

Procedure InsertMas2(Var m : MyArray; n : integer);
. . .

Procedure PrintMas(m : MyArray; n : integer);
. . .

Procedure InsertN(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;

Задание. Дополните программу необходимыми операторами и комментариями и добейтесь работоспособности программы.

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

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