
Лабораторная работа №5
«Алгоритмы обработки одномерных массивов. Алгоритмы сортировки»
Оглавление
Y
1. Задание на лабораторную работу 3
2. Формализация 5
3. Заставка к лабораторной работе 5
4. Схема алгоритма решения задачи 6
5. Листинг программы 15
5.1 Листинг основной программы 15
.2 Листинг dll библиотеки 16
6 Тестирование программы 20
Список использованной литературы: 22
Задание на лабораторную работу
Задача: Разработать проект с двумя формами. Первая форма – заставка к приложению, вторая – решение задания лабораторной работы. Заставка в первой форме должна быть реализована при помощи надписи. Кроме этого разработать функцию VSTAVKA, PROSOYVSTAVKA, entermas,kiks и outputmas типа void , которые будут находиться в dll библиотеке.
Дан целочисленный массив, элементы которого могут принимать неотрицательные целые значения до 10000 включительно. Необходимо произвести метод вставки элемента массива и отдельно вывести массив с данным результатом, а также произвести сортировку исходного массива методом простой вставки и также вывести массив с данным результатом.
Вставка элементов массива осуществляется следующим образом:
1) Первые k элементов массива остаются без изменения;
2) Все элементы, начиная с (k - 1)-го необходимо сдвинуть вправо, чтобы
освободить место для вставляемого элемента;
3) Элементу с номером k присвоить значение m. Количество элементов
массива увеличить на 1.
Сортировка массива простой вставкой осуществляется следующим образом:
Пусть имеется массив a[1], a[2], ..., a[n]. Пусть элементы a[1], a[2], ..., a[i
– 1] уже отсортированы, и пусть имеем входную последовательность a[i], a[i
+ 1], ..., a[n]. На каждом шаге, начиная с i = 2 и увеличивая i на единицу, берем i-й элемент входной последовательности и вставляем его на подходящее место в уже отсортированную часть последовательности. Вставляемый элемент - х. Начальный массив 32 64 9 30 87 14 2 76.
i = 2 х = 64. Ищем для х подходящее место, считая, что а[1] = 32 — это уже отсортированная часть последовательности. Получаем 32 64 9 30 87 14 2 76.
i=3 х=9. Ищем для х подходящее место: 9 32 63 30 87 14 2 76.
i = 4 х = 30. Ищем для х подходящее место: 9 30 32 64 87 14 2 76.
i = 5 х = 87. Ищем для х подходящее место: 9 30 32 64 87 14 2 76.
i = 6 х = 14. Ищем для х подходящее место: 9 14 30 32 64 87 2 76.
i=7 х=2. Ищем для х подходящее место: 2 9 14 30 32 64 87 76.
i = 8 х = 76. Ищем для х подходящее место: 2 9 14 30 32 64 76 87.
При поиске подходящего места для элемента х чередуются сравнения и
пересылки.
«Просеивание» может закончиться при двух различных условиях:
1) Найден элемент, значение которого больше, чем х;
2) Достигнут конец последовательности.
Для выполнения лабораторной работы требуется разработать:
Заставку в первой форме, которая должна быть реализована при помощи надписи.
Функцию kiks типа void с параметрами (int* a, int len,TextBox^s, TextBox^ k, TextBox^ d, TextBox^ n), в которой будет происходить основные вычисления программы: нахождения количества четных и нечетных элементов, а также подсчет всех перемноженных значений четных цифр и отдельно нечетных цифр.
Функцию outputmas типа void с параметрами (int* a, int len, DataGridView^ dgv), в которой будет происходить вывод массива, а также будут вноситься дополнительные под настройки для datagridview1 .
Функцию entermas типа void с параметрами (int* mas, int n), в которой будет происходить генерация массива.
Функцию VSTAVKA типа void с параметрами (int k, int* mas, int n, int m), в которой будет вставка элементов массива.
Функцию PROSOYVSTAVKA типа void с параметрами (int* mas, int n), в которой будет происходить сортировка массива с помощью метода простой вставки.
Разработать dll библиотеку, в которой будут находиться функция: kiks, outputmas, entermas,VSTAVKA,PROSOYVSTAVKA.
Событийную в которой будет происходить считывание данных через MessageBox и генерация массива, а также будет происходить запуск функции kiks и outputmas.