Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

06 - Одномерные массивы _сложные_

.pdf
Скачиваний:
16
Добавлен:
14.03.2016
Размер:
296.42 Кб
Скачать

Л. Р. №

Студент

Иванов И. И.

«Циклические перестановки

Группа

ХХ-999

 

 

Дата

дд.мм.гг

в одномерных массивах»

 

 

 

Допуск

 

 

 

 

 

Выполнение

 

 

 

 

 

Отчет

 

 

 

 

Условие задачи

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

в котором число элементов кратно K , равных частей, внутри каждой из частей минимумом соответствующего отрезка

Тестовый пример

Входные данные:

 

 

 

 

 

 

 

 

 

K=2, L=12

 

 

 

 

 

 

 

 

 

 

Исходный массив A:

79

1

1

0

45

54

4

54

5

5

4

0

4

14

4

5

554

4

4

4

54

4

0

1

Выходные данные:

всерии 1 imax=5 imin=4

всерии 2 imax=17 imin=23

массив A после

изменения:

 

 

 

 

 

 

 

5

5

4

0

79

 

1

1

0

45

54

4

54

4

14

4

5

4

 

0

4

4

4

54

554

1

1

Блок-схема

Начало

1

Ввод k, L

2

N:=k*L

3

i := 1 , N

4

Ввод A[i]

5

i := 1 , N

6

Вывод A[i]

7

k:=0

8

m := 1 , k

9

Сортировка элементов в сериях

10

шаг 9-10

см. стр. 3

i := 1 , N

11

Вывод A[i]

12

Конец

2

3

Листинг программы на Pascal

program ABC; const Nmass=100;

var A:array[1..Nmass] of integer;

N,i,k,L, left, right, imax, imin,m,NN, Lsort: byte; buf:integer;

begin cls;

//ручной ввод массива

writeLn('Введите k - количество серий элментов в массиве A'); readLn(k);

writeLn('Введите L - количество элементов в серии'); readLn(L);

// всего получается N=k*l элементов в массиве

N:=k*L;

writeLn('Вводим элементы массива A:'); for i:=1 to N do

begin write('A[',i,']='); readLn(A[i]);

end;

//вывод массива до измененния

writeLn('Исходный массив A:'); for i:=1 to N do

write(A[i]:5);

writeLn;

for m:=1 to k do begin

//m- номер серии

//поиск максимума и минимума в серии imax:=(m-1)*L+1;

imin:=(m-1)*L+1;

for i:=(m-1)*L+1 to m*L do begin

if A[i]>A[imax] then imax:=i;

if A[i]<A[imin] then imin:=i;

end;

writeLn('в серии ', m); WriteLn('imax=',imax, ' imin=',imin);

//выясняем что раньше встречается: imax или imin? if imax>imin then

begin left:=imin; right:=imax;

4

end else

begin left:=imax; right:=imin;

end;

//вычисляем длину сортируемого промежутка

Lsort:=abs(left-right);

//сортировка элементов между максимумом и минимумом for NN:=1 to Lsort-1 do

for i:=left to right-NN do if A[i]>A[i+1] then

begin buf:=A[i]; A[i]:=A[i+1]; A[i+1]:=buf;

end;

end;

//вывод массива поле измененния writeLn;

writeLn('массив A после изменения:'); for i:=1 to N do

write(A[i]:5);

end.

5

Список задач для лабораторной работы «Циклические перестановки в одномерных массивах»

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

2.Ввести одномерный целочисленный массив A, вывести его. В массиве отсортировать по убыванию все элементы стоящие после минимального.

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

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

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

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

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

8.Ввести одномерный массив A, вывести его. Переставить в обратном порядке все элементы между максимальным и предпоследним отрицательным элементом.

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

10.Ввести одномерный массив A, вывести его. Найти в массиве максимум

ичасть до максимального элемента отсортировать по убыванию, а после максимума – по возрастанию.

6

11.Ввести одномерный массив A, вывести его. Найти в массиве минимум

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

12. Ввести одномерный целочисленный массив A, вывести его. Произвести циклический сдвиг влево его элементов столько раз, сколько раз в массиве встречаются чётные числа.

13. Ввести одномерный целочисленный массив A, вывести его. Произвести циклический сдвиг вправо его элементов столько раз, сколько раз в массиве встречаются отрицательные числа.

14.Ввести одномерный целочисленный массив A, вывести его. Найти максимальный среди нечётных элементов. Далее трижды произвести циклический сдвиг влево элементов стоящих справа от найденного максимума, и один раз вправо сдвиг элементов стоящих слева от найденного максимума.

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

16.Ввести одномерный массив A, вывести его. Элементы первой половины массива, отсортировать по возрастанию, а второй половины переставить в обратном порядке.

17.Ввести одномерный массив A, вывести его. Произвести циклический сдвиг элементов расположенных вне границ между максимумом и минимумом вправо (элементы между максимумом и минимумом остаются на своих местах).

18.Ввести одномерный массив A, вывести его. Произвести циклический сдвиг его элементов вправо, при этом не затрагивая максимум и минимум.

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

7

20.Ввести целочисленный одномерный массив A, вывести его. Найти первый чётный и последний положительный элементы. Произвести сортировку по возрастанию, элементов расположенных между ними.

21.Ввести целочисленный одномерный массив A, вывести его. Найти K – количество нечётных элементов в этом массиве. Произвести циклический сдвиг вправо элементов массива K раз.

22.Ввести одномерный массив A, в котором число элементов кратно трём, вывести его. Разбить массив на три равные части, каждую из которых отсортировать по возрастанию.

23.Ввести одномерный массив A, в котором число элементов кратно K , вывести его. Разбить массив на K равных частей, каждую из которых переставить в обратном порядке.

24.Ввести одномерный массив A, в котором число элементов кратно K , вывести его. Разбить массив на K равных частей, внутри каждой из областей осуществить циклический сдвиг элементов влево.

25.Ввести одномерный массив A, в котором число элементов кратно K , вывести его. Разбить массив на K равных частей, внутри каждой из частей найти максимум, а элементы следующие за найденным максимумом в каждой из частей заменить единицами.

8