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

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

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

Pascal



const n = 6;

var
arr: array[1..n] of integer;
i, 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.



2
4
5
7
9
Ваш массив: 2 4 5 7 9
Укажите еще один элемент: 8
Позиция в массиве: 5
Ваш массив: 2 4 5 7 8 9

Язык Си


#include

main() {
int a[6], i, j, n;
for (i=0; i < 5; i++)
scanf("%d", &a[i]);
printf("Число: ");
scanf("%d", &n);
printf("Позиция: ");
scanf("%d", &j);
for (i=4; i >= j-1; i--)
a[i+1] = a[i];
a[j-1] = n;
for (i=0; i<6; i++)
printf("%d ", a[i]);
printf("\n");
}



45 3 3 4 22
Число: 45
Позиция: 3
45 3 45 3 4 22

Python



# 1-й вариант:

a = []
N = 5
for i in range(N):
num = int(input())
a.append(num)
print(a)
num = int(input("Число: "))
j = int(input("Позиция: "))
a.append(num)
while N > j-1:
a[N], a[N-1] = a[N-1], a[N]
N -= 1
print(a)

# 2-й вариант:

a = []
N = 5
for i in range(N):
num = int(input())
a.append(num)
print(a)
num = int(input("Число: "))
j = int(input("Позиция: "))

a.insert(j-1,num)

print(a)

# 3-й вариант:

a = []
N = 5
for i in range(N):
num = int(input())
a.append(num)
print(a)
num = int(input("Число: "))
j = int(input("Позиция: "))

a = a[0:j-1] + [num] + a[j-1:]

print(a)



7
5
4
3
2
[7, 5, 4, 3, 2]
Число: 1
Позиция: 1
[1, 7, 5, 4, 3, 2]

Здесь используется немного иной алгоритм. Сначала в конец добавляется новый элемент, а потом происходит перемещение этого элемента обменом с соседними до указанной позиции.

Во втором способе используется метод insert() списков, а в третьем - создается новый список из срезов.

КуМир


алг вставка элемента
нач
цел N = 6
цел таб arr[1:N]
цел i, num, id
вывод "Заполните массив: ", нс
нц для i от 1 до N-1
ввод arr[i]
кц
вывод "Ваш массив: "
нц для i от 1 до N-1
вывод arr[i], " "
кц
вывод нс
вывод "Число: "
ввод num
вывод "Позиция: "
ввод id
нц для i от N-1 до id шаг -1
arr[i+1] := arr[i]
кц
arr[id] := num;
вывод "Ваш массив: "
нц для i от 1 до N
вывод arr[i], " "
кц
кон



Заполните массив:
5
23
12
8
15
Ваш массив: 5 23 12 8 15
Число: 28
Позиция: 3
Ваш массив: 5 23 28 12 8 15

Basic-256


N = 6
dim a(N)
for i=0 to N-2
input a[i]
next i
for i=0 to N-2
print a[i] + " ";
next i
print

input "Число: ", num
input "Позиция: ", id
for i=N-2 to id-1 step -1
a[i+1] = a[i]
next i
a[id-1] = num
for i=0 to N-1
print a[i] + " ";
next i



12
16
19
13
11
12 16 19 13 11
Число: 18
Позиция: 3
12 16 18 19 13 11

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Pascal


const n = 6;

var
arr: array[1..n] of integer;
i, 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.



2
4
5
7
9
Ваш массив: 2 4 5 7 9
Укажите еще один элемент: 8
Позиция в массиве: 5
Ваш массив: 2 4 5 7 8 9
Язык Си

#include

main() {
int a[6], i, j, n;
for (i=0; i < 5; i++)
scanf("%d", &a[i]);
printf("Число: ");
scanf("%d", &n);
printf("Позиция: ");
scanf("%d", &j);
for (i=4; i >= j-1; i--)
a[i+1] = a[i];
a[j-1] = n;
for (i=0; i
Python


# 1-й вариант:

a = []
N = 5
for i in range(N):
num = int(input())
a.append(num)
print(a)
num = int(input("Число: "))
j = int(input("Позиция: "))
a.append(num)
while N > j-1:
a[N], a[N-1] = a[N-1], a[N]
N -= 1
print(a)

# 2-й вариант:

a = []
N = 5
for i in range(N):
num = int(input())
a.append(num)
print(a)
num = int(input("Число: "))
j = int(input("Позиция: "))

a.insert(j-1,num)

print(a)

# 3-й вариант:

a = []
N = 5
for i in range(N):
num = int(input())
a.append(num)
print(a)
num = int(input("Число: "))
j = int(input("Позиция: "))

a = a[0:j-1] + [num] + a[j-1:]

print(a)



7
5
4
3
2
[7, 5, 4, 3, 2]
Число: 1
Позиция: 1
[1, 7, 5, 4, 3, 2]

Здесь используется немного иной алгоритм. Сначала в конец добавляется новый элемент, а потом происходит перемещение этого элемента обменом с соседними до указанной позиции.

Во втором способе используется метод insert() списков, а в третьем - создается новый список из срезов.
КуМир

алг вставка элемента
нач
цел N = 6
цел таб arr[1:N]
цел i, num, id
вывод "Заполните массив: ", нс
нц для i от 1 до N-1
ввод arr[i]
кц
вывод "Ваш массив: "
нц для i от 1 до N-1
вывод arr[i], " "
кц
вывод нс
вывод "Число: "
ввод num
вывод "Позиция: "
ввод id
нц для i от N-1 до id шаг -1
arr[i+1] := arr[i]
кц
arr[id] := num;
вывод "Ваш массив: "
нц для i от 1 до N
вывод arr[i], " "
кц
кон



Заполните массив:
5
23
12
8
15
Ваш массив: 5 23 12 8 15
Число: 28
Позиция: 3
Ваш массив: 5 23 28 12 8 15
Basic-256

N = 6
dim a(N)
for i=0 to N-2
input a[i]
next i
for i=0 to N-2
print a[i] + " ";
next i
print

input "Число: ", num
input "Позиция: ", id
for i=N-2 to id-1 step -1
a[i+1] = a[i]
next i
a[id-1] = num
for i=0 to N-1
print a[i] + " ";
next i



12
16
19
13
11
12 16 19 13 11
Число: 18
Позиция: 3
12 16 18 19 13 11