Самарский национальный исследовательский университет имени академика С.П. Королева
Институт двигателей и энергетических установок,
кафедра Автоматические системы энергетических установок
Отчёт по лабораторной работе №4
по дисциплине Программирование и алгоритмизация
" Алгоритмы обработки одномерных числовых массивов "
Выполнил: студент группы 2114
Сухова Ксения Михайловна
Принял: доцент Федотов Ю.А.
Самара, 2016
Цель заданий. Приобрести умения в синтезе формальной и алгоритмической моделей решения задач. Сформировать компетенции анализа и синтеза при решении простых задач циклической обработки значений массива.
Задание1: В одномерном массиве определить первый отрицательный элемент и его номер.
Решение:
В массиве А[1..N] нужно последовательно определять положительный ли элемент A[i] или нет, начиная с первого. При нахождении первого отрицательного элемента нужно запомнить его значение A[i] и его номер i и завершить цикл.
НАЧАЛО
N - количество элементов в массиве
A[1..N] - одномерный массив
ВВОД: N, A[1..N]
i = 1
i - текущий номер элемента массива
ВЫВОД: в массиве нет отрицательных элементов
i <= N
-
+
A[i] < 0
ВЫВОД: A[i], i
+
-\-
i = i + 1
КОНЕЦ
Задание2: Исключить из массива а1,…, аn первый отрицательный элемент.
Решение:
При нахождении отрицательного элемента в массиве a[1..n] нужно все элементы после него (то есть правее) сдвинуть на один элемент влево. Тогда на месте отрицательного элемента a[i] будет следующий элемент a[i+1], на месте элемента a[i+1] - элемент a[i+2] и так далее. На месте последнего элемента будет 0.
НАЧАЛО
n - количество элементов в массиве
a[1..n] - одномерный массив
ВВОД: n, a[1..n]
i = 1
i - текущий номер элемента массива
а[i] < 0
k = i
+
k - вспомогательная переменная
-
k <= n-1
i = i + 1
a[n] = 0
-
i <= n
+
-
a[k]=a[k+1]
k = k + 1
+
ВЫВОД: a[1..n]
ВЫВОД: отрицательных элементов в массиве нет
КОНЕЦ
Задание3: Ввести массив a1, a2,..., a15. Расположить ненулевые элементы по убыванию.
Решение:
Д
ля
сортировки для начала ненулевые элементы
массива a[1..15]
перенесем в новый массив b[1..m],
где m
- количество ненулевых элементов
начального массива, m<=15.
Для массива b[1..m]
произведем сортировку элементов по
убыванию. После заменим ненулевые
элементы массива a[1..15]
упорядоченными элементами b[1..m].
НАЧАЛО
B = 0 k = 1
ВВОД: a[1..15]
a[1..15] - одномерный массив
b[k] > b[k+1]
+
i, j - текущие номера элементов массивов a[1..15, b[1..m]
i = 1 j = 1 m = 0
-
M = b[k] b[k]=b[k+1] b[k+1]=M B = B + 1
i <= 15
-
k = k + 1
+
-
a[i]<>0
-
k<=m-1
+
-
B = 0
+
+
b[1..m] - одномерный массив m - количество элементов массива
b[j] = a[i] m = m + 1 j = j + 1
i = 1 j = 1
Сортировка методом парных перестановок B - количество перестановок M - вспомогательная переменная
i = i + 1
i <= 15
-
+
a[i]<>0
-
ВЫВОД: a[1..n]
Замена ненулевых элементов a[1..15] упорядоченными элементами b[1..m]
+
a[i] = b[j] j = j + 1
КОНЕЦ
i = i + 1
Задание4: Ввести массив x1,x2,...,x20. Элементы на нечетных местах,
расположить в порядке возрастания, а на четных – в порядке убывания.
Решение: В массиве a[1..20] сортируем сначала элементы на четных местах, то есть элементы, начиная с i=1, и далее i+2, i+2+2 и т.д. Их сортируем в порядке возрастания методом парных перестановок. Потом сортируем в порядке убывания элементы на четных местах, но уже начиная с i=2.
НАЧАЛО
i = 2
B = 0
a[1..20] - одномерный массив
ВВОД: a[1..20]
a[i] > a[i+2]
+
i - текущий номер элемента В - количество перестановок в массиве за один цикл
i = 1
B = 0
-
Цикл сортировки элементов массива на нечетных местах по убыванию
M = a[i] a[i] = a[i+2] a[i+2] = M B = B + 1
a[i] < a[i+2]
+
Цикл сортировки элементов массива на нечетных местах по возрастанию М - вспомогательная переменная для парной перестановки элементов
-
M = a[i] a[i] = a[i+2] a[i+2] = M B = B + 1
i = i + 2
i <= 18
+
-
i = i + 2
B = 0
-
-
i <= 17
B = 0
+
+
-
+
ВЫВОД: a[1..20]
КОНЕЦ
Задание5: Ввести массив a1,a2,...,a15. Требуется упорядочить его по возрастанию
абсолютных значений элементов.
