Главная страница

При реверсе массива первый элемент становится последним. Of integer i byte b integer begin for i1 to


Скачать 16.56 Kb.
НазваниеOf integer i byte b integer begin for i1 to
Дата27.06.2022
Размер16.56 Kb.
Формат файлаdocx
Имя файлаПри реверсе массива первый элемент становится последним.docx
ТипДокументы
#617570

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

Конечно, переставлять можно также, начиная с середины массива и двигаясь к его началу и концу. Однако вышеописанный способ немного проще.

Если в массиве нечетное количество элементов, то в середине массива находится один элемент, у которого нет пары и который обменивать не надо. Если же в Напишите программу, которая заполняет массив случайными числами на отрезке">массиве четное количество элементов, то в середине находится пара, которая также должна обменяться. В любом случае количество обменов будет равно количеству элементов массива нацело деленному на 2.

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

Реверс массива – это перестановка элементов в обратном порядке: меняются местами первый и последний элементы, второй и предпоследний и т.д. Напишите программу, которая выполняет реверс части массива, начиная с элемента с номером K и заканчивая элементом с номером M (включительно). Нумерация элементов массива начинается с единицы.





const N = 10;


var


a: array[1..N] of integer;


i: byte;


b: integer;


begin


for i:=1 to N do


read(a[i]);





for i:=1 to N div 2 do begin


b := a[i];


a[i] := a[N-i+1];


a[N-i+1] := b;


end;





for i:=1 to N do


write(a[i],' ');





writeln;


end.





#include


#define N 9


main() {


int a[N], i, b;


for (i=0; i< N; i++) scanf("%d",&a[i]);


for (i=0; i< N/2; i++) {


b = a[i];


a[i] = a[N-i-1];


a[N-i-1] = b;


}


for (i=0; i< N; i++) printf("%d ",a[i]);


printf("\n");


}







a = input()


a = a.split()


a = [int(i) for i in a]


for i in range(len(a)//2):


b = a[i]


a[i] = a[len(a)-i-1]


a[len(a)-i-1] = b


#a.reverse()


#a = a[::-1]


print(a)


написать администратору сайта