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

Прикладное программирование. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
for i := 1 to m-1 do
Begin
for j := 1 to m-i do if arr[j] > arr[j+1] then begin k := arr[j]; arr[j] := arr[j+1]; arr[j+1] := k end; write ('Отсортированный массив: '); for i := 1 to m do write (arr[i]:4); end.
III. Сортировка простыми вставками
Третий метод называется методом вставок, т.к. на j-ом этапе мы «вставля­ем» j-ый элемент M[j] в нужную позицию среди элементов M[1], M[2],. . ., M[j-
1], которые уже упорядочены. После этой вставки первые j элементов массива M будут упорядочены. Сказанное можно записать следующим образом:
нц для j от 2 до N
переместить M[j] на позицию i <= j такую, что
M[j] < M[k] для i<= k < j и
либо M[j] >= M[i-1], либо i=1
кц
Чтобы сделать процесс перемещения элемента M[j], более простым, полез­но воспользоваться барьером: ввести «фиктивный» элемент M[0], чье значение будет заведомо меньше значения любого из «реальных» элементов массива (как это можно сделать?). Мы обозначим это значение через – оо.
Если барьер не использовать, то перед вставкой M[j], в позицию i-1 надо проверить, не будет ли i=1. Если нет, тогда сравнить M[j] (который в этот мо­мент будет находиться в позиции i) с элементом M[i-1].
Описанный алгоритм имеет следующий вид:
41
M[0] := -oo; for j:=2 to N do begin i := j; while M[i] < M[i-1] do begin swap(M[i],M[i-1]); i := i-1; end; end; end;
procedure swap(var x,y: ...); var t: ...; begin t := x; x := y; y := t end;
Оформление в виде процедур Примеры решений задач
1. Сортировка отбором
Procedure otbor (Var x:arr; dlina:integer); Var mal: dano; Min, k,j: integer; Begin For k:=1 to dlina-1 do Begin Mal:=x[k]; Min:=k; For j:=k+1 to dlina do
42
If x[j]<mal then Begin Mal:=x[j]; Min:=j; End; X[min]:=x[k]; X[k]:=mal End; End;
2. Сортировка методом пузырька. Procedure Bubble (Var X:massiv; DLINA:integer); Var A:dannoe; J,R: integer; ZAMENA: boolean; Begin Repeat ZAMENA:=false; For J:=2 to R do If X[j-1]>X[J] then Begin A:=X[J-1]; X[J-1]:=X[J]; X[J]:=A; ZAMENA:= true End; R:=R-1 Until not ZAMENA; End.
3. Сортировка методом простых вставок. Procedure simpins (Var a:arr);
43
Var j,j,k: word; T: integer; Begin For i:=2 to n do Begin T:=a[i]; J:=1; While (t>=a[j]) and (j<i) do inc(j); If j<>i then For k:=j-1 downto j do a[k+1]=a[k]; A[j]:=t End; End; End.
Примеры заданий «Массивы»
Вариант 1
Задача 1. Ввести с экрана 1-мерный массив F целого типа. Найти мини-
мальный элемент среди отрицательных элементов массива. Найденный мини­мальный элемент распечатать на экране.
Задача 2. Ввести два одинаковой длины 1-мерных массив А и В целого типа. Переписать все элементы массива А в массив В, а элементы массива В – в массив А. Использовать промежуточный массив С. Полученные массивы А и В распечатать.
Вариант 2
Задача 1. Ввести с экрана 1-мерный массив А целого типа.
Заменить все четные элементы массива суммой первого и последнего эле­ментов. Полученный массив А распечатать на экране.
Задача 2. Ввести 1-мерный массив А целого типа. Сформировать новый массив В, переписав в него все положительные элементы массива А, затем – все отрицательные элементы массива А. Полученный массив В распечатать.
44
Вариант 3
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти сумму
отрицательных элементов и их количество. Полученную сумму и их количество распечатать на экране.
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него массив с наименьшим количеством нулей, а затем – массив с большим количеством нулей. Полученный массив С распеча­тать.
Вариант 4
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти произве-
дение положительных элементов и их количество. Полученные результаты рас­печатать на экране.
Задача 2. Ввести два одинаковой длины 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него все нечетные элементы массива А, затем — все нечетные элементы массива В. Полученный массив С распечатать на экране.
Вариант 5.
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти среднее
арифметическое всех нечетных элементов массива А. Найденное значение рас­печатать на экране.
Задача 2. Ввести с экрана 1-мерный массив А целого типа. Сформировать новый массив С, переписав в него все элементы массива А с четными индекса­ми. Полученный массив С распечатать на экране.
Вариант 6
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Заменить нуля­ми все положительные элементы массива и найти их количество. Полученный массив А распечатать на экране.
Задача 2. Ввести два одинаковой длины 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него тот массив (А или В),
45
где наименьшее значение находится ближе к началу этого массива. Получен­ный массив С распечатать на экране.
Вариант 7
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Заменить все нулевые элементы массива минимальным элементом массива А. Полученный массив распечатать на экране.
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него все четный элементы массива А, затем чет­ные элементы массива В. Полученный массив С распечатать на экране.
Вариант 8
Задача 1. Ввести с экрана — мерный массив А целого типа. Найти количе­ство отличных от нуля элементов массива А и их индексы. Распечатать на экране найденные индексы отличных от нуля элементов и их количество.
Задача 2. Ввести 1-мерный массив А целого типа. Сформировать новый массив В, переписав в него все четные элементы массива А, затем нечетные элементы массива А. Полученный массив В распечатать на экране.
Вариант 9
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти сумму нечетных элементов массива А. Полученный результат распечатать на экране.
Задача 2. Ввести 1-мерный массива А целого типа. Сформировать два но­вых массива В и С , переписав в массив В все положительные элементы масси­ва А, а в массив С все отрицательные элементы массива а. Полученные масси­вы В и С распечатать на экране.
Вариант 10
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти мини­мальный элемент и его порядковый номер (индекс) среди элементов массива. Полученный результат распечатать на экране.
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него все элементы того массива (А или В), у кото-
46
рого сумма элементов наибольшая. Полученный массив С распечатать на экране.
Вариант 11
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти макси­мальный элемент среди положительных элементов массива. Найденный макси­мальный элемент распечатать на экране.
Задача 2. Ввести два одинаковой длины 1-мерных массива А и В целого типа. Переписать все элементы массива А в массив В, а элементы массива В — в массив А. Не использовать промежуточный массив С. Полученные массивы А и В распечатать.
Вариант 12
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Заменить все нулевые элементы массива суммой первого и последнего элементов. Получен­ный массив А распечатать на экране.
Задача 2. Ввести 1-мерный массива А целого типа. Сформировать новый массив В, переписав в него все элементы массива А кратные 5, затем — все ставшиеся элементы массива А. Полученный массив В распечатать.
Вариант 13
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти сумму положительных элементов и их количество. Полученную сумму и их количе­ство распечатать на экране.
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него массив с большим количеством нулей, а за­тем — массив с меньшим количеством нулей. Полученный массив С распеча­тать.
Вариант 14
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти произве­дение отрицательных элементов и их количество. Полученные результаты рас­печатать на экране.
47
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него все кратные 7 элементы массива А, затем ­все кратные 8 элементы массива В. Полученный массив С распечатать на экране.
Вариант 15
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти среднее арифметическое всех положительных элементов массива А. Найденное значе­ние распечатать на экране.
Задача 2. Ввести 1-мерный массив А целого типа. Сформировать новый массив С, переписав в него все элементы массива А с нечетными индексами. Полученный массив С распечатать на экране.
Вариант 16
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Заменить нуля­ми все отрицательные элементы массива и найти их количество. Полученный массив А и количество распечатать на экране.
Задача 2. Ввести два одинаковой длины 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него тот массив (А или В), где наибольшее значение находится ближе к началу этого массива. Получен­ный массив С распечатать на экране.
Вариант 17
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Заменить все нулевые элементы массива максимальным элементом массива А. Полученный массив распечатать на экране.
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него все нечетные элементы массива А, затем — нечетные элементы массива В. Полученный массив С распечатать на экране.
Вариант 18
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти количе­ство нулевых элементов массива А и их индексы. Распечатать на экране найденные индексы нулевых элементов и их количество.
48
Задача 2. Ввести один 1-мерный массив А целого типа. Сформировать но­вый массив В, переписав в него все кратные 3 элементы массива А, затем — кратные 4 элементы массива А. Полученный массив В распечатать на экране.
Вариант19
Задача 1.Ввести с экрана 1-мерный массив. А целого типа. Найти сумму четных элементов массива А. Полученный результат распечатать на экране.
Задача 2. Ввести 1-мерный массив А целого типа. Сформулировать два но­вых массива В и С, переписав в массив В все элементы массива А большие 3, а в массив С все элементы массива А меньшие 3. Полученные массивы В и С распечатать на экране.
Вариант20
Задача1.Ввести с экрана 1-мерый массив А целого типа. Найти максималь­ный элемент и его порядковый номер (индекс) среди элементов массива. Полу­ченный результат распечатать на экране.
Задача 2. Ввести два 1-мерых массива А и В целого типа. Сформулировать новый массив С, переписав в него все элементы того массива (А и В),у которо­го сумма элементов наименьшая. Полученный массив С распечатать на экране.
Вариант 21
Задача 1.Ввести с экрана 1-мерый массив А целого типа. Найти макси­мальный элемент среди честных элементов массива .Найденный максимальный элемент распечатать на экране.
Задача 2. Ввести два одинаковой длины 1- мерный массива А и В целого типа. Переписать все не нулевые элементы массива А. Полученные массивы А и В распечатать.
Вариант 22.
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Заменить все нечетные элементы массив суммой второго и предпоследнего элементов. Полу­ченный массив А распечатать на экране.
Задача 2. Ввести 1-мерный массива целого типа. Сформулировать новый массив В, переписав в него все элементы массив А.
49
Полученный массив В, переписав в него все элементы массива А, кроме нулевых, затем все нулевые элементы массивы А. Полученный массив В рас­печатать.
Вариант 23
Задача 1. Ввести с экрана 1-метрый массив А целого типа. Найти сумму четных элементов и их количества. Полученную сумму и их количество распе­чатать на экране.
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него массив с большим количеством положитель­ных элементов. Полученный массив С распечатать.
Вариант 24.
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти произве­дение нечетных элементов и их количество. Полученные результаты распеча­тать на экране.
Задача 2. Ввести два 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него тот массив, где минимальный находиться дальше от начало массива. Полученный массив С распечатать на экране.
Вариант 25
Задача 1. Ввести с экрана 1-мерный массив А целого типа. Найти среднее арифметическое всех отрицательных элементов массива А. Найденное значение распечатать на экране.
Задача 2. Ввести 1-мерный массив А целого типа. Сформировать новый массив С, переписав на него все элементы массива А с индексами кратными 3. Полученный массив С распечатать на экране.
Вариант 26
Задача 1.Ввести с экрана 1-мерный массив А целого типа. Заменить нуля­ми все четные элементы массива и найти их количество. Полученный массив А и количество распечатать на экране.
Задача 2. Ввести два одинаковой длины 1-мерных массива А и В целого типа. Сформировать новый массив С, переписав в него тот массив (А или В),
50