Вставка элемента в массив
Написать процедуру вставки элемента в массив. Все элементы после него сдвигаются на
один вправо, а последний элемент массива теряется.
Лучшие ответы ( 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, в нём нужно.
Одномерный массив. Вставка элемента.
Задача на одномерный массив: Вставить новый элемент после первого отрицательного элемента. .
Или воспользуйтесь поиском по форуму:
Вставка элемента в массив
Требуется добавить элемент в произвольное место массива.
Алгоритм решения задачи:
- Задаем длину массива на один элемент больше, чем он будет заполнен в начале.
- Выясняем значение и позицию добавляемого элемента
- Все элементы до указанной позиции сдвигаем на один назад.
- Присваиваем по указанному индексу (позиции) значение.
- Остальная (передняя) часть массива не изменяется.
Программа на языке Паскаль:
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;
Задание. Дополните программу необходимыми операторами и комментариями и добейтесь работоспособности программы.