Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Прикладное программирование. Учебное пособие
.pdf
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
