Последовательность выполнения работы
Задание на курсовую работу по дисциплине «Алгоритмические языки и программирование»
Тип заданий I
Исходные данные
Дано:
· двумерный массив (матрица) целых чисел размерностью М*N, т.е. содержащий М строк и N столбцов. Значения М и N определяются таким образом, чтобы все три контура заданного варианта полностью умещались внутри матрицы (см. столбец 3 в табл. 1);
· направление сортировки одномерных массивов определен в таблице вариантов (см. столбец 2);
· способ дополнительной обработки одномерных массивов (см. столбец 4).
Варианты заданий
Таблица 1
Таблица вариантов заданий I типа
№ вар. | Номер метода сортировки (направление) | Контуры массивов* A, B, C | Способ обработки массивов |
(по возрастанию) | 1,1-4,4-7,1-1,1 1,9-7,9-4,6-1,9 4,8-4,11-7,11-4,8 | Массив неупорядочен. Элементы группы, содержащей наибольшее число подряд идущих одинаковых элементов заменить на максимальный элемент массива | |
(по убыванию) | 1,1-1,4-5,4-4,3-4,1-1,1 2,5-4,7-4,9-7,9-7,6-6,5-2,5 1,8-1,11-3,11-3,8-1,8 | Массив неупорядочен. Элементы группы, содержащей наибольшее число подряд идущих отрицательных элементов, заменить на минимальный элемент этого массива | |
(по возрастанию) | 1,1-1,7-4,4-1,1 7,3-4,6-7,9-7,3 4,9-4,11-7,11-7,9-4,9 | Массив упорядочен. Группу, содержащую наибольшее число равных положительных элементов, перенести в начало массива | |
(по убыванию) | 1,1-1,5-3,5-3,1-1,1 4,8-1,11-4,11-4,6 4,4-4,7-7,4-4,4 | Массив упорядочен. Элементы группы с наибольшим числом подряд идущих положительных элементов, кратных двум, заменить нулями | |
(по возрастанию) | 1,1-1,9-3,7-3,3-1,1 4,4-4,7-7,4-4,4 6,8-3,11-6,11-6,3 | Массив упорядочен. Все положительные элементы, кратные 5, переписать в конец массива | |
(по убыванию) | 4,1-4,7-7,4-4,1 1,8-1,11-5,11-5,8-1,8 1,5-1,7-5,7-5,5-1,5 | Массив неупорядочен. Все группы элементов, содержащие более трех подряд идущих отрицательных элементов, поставить после наибольшего элемента массива | |
(по возрастанию) | 1,1-1,7-4,4-4,1-1,1 4,9-7,9-7,3-4,6-4,9 4,1-4,4-3,5-5,5-7,3-7,1-4,1 | Массив упорядочен. Все положительные элементы, имеющие четный порядковый номер, переписать в начало массива | |
(по убыванию) | 3,1-3,3-7,3-7,1-3,1 1,7-4,7-4,4-1,7 1,11-7,11-4,8-1,11 | Массив упорядочен. Все нулевые элементы переписать в конец массива | |
(по возрастанию) | 1,1-1,4-4,4-1,1 1,8-1,11-4,8-1,8 4,5-4,7-7,7-7,5-4,5 | Массив упорядочен. Подсчитать, сколько пар равных элементов и расположенных на соседних местах содержится в массиве. Первую пару равных элементов поменять местами с последней парой. | |
(по убыванию) | 1,1-1,7-7,1-1,1 7,4-5,6-5,9-7,9-7,4 4,8-1,11-4,11-4,8 | Массив упорядочен. Заменить все элементы, для которых находится только один равный ему, на наименьший элемент этого массива. | |
(по возрастанию) | 1,1-4,4-7,1-1,1 3,5-3,7-6,7-6,5-3,5 1,11-7,11-4,8-1,11 | Массив упорядочен. Все элементы, для которых находится хотя бы один равный ему элемент, переписать в конец массива. | |
(по убыванию) | 1,1-13-2,4-5,4-4,3-4,1-1,1 3,5-4,6-4,9-7,9-7,6-6,5-3,5 7,3-4,6-7,9-7,3 | Массив упорядочен. Если в массиве обнаружится группа, состоящая из трех и более подряд стоящих нулей, то переписать ее в начало массива | |
( по возрастанию) | 4,1-4,4-7,1-4,1 4,5-1,8-4,8-4,5 4,9-4,11-7,11-7,9-4,9 | Массив неупорядочен. Все нулевые элементы переписать в конец массива | |
(по убыванию) | 1,1-1,3-2,4-5,4-4,3-4,1-1,1 3,5-4,6-4,9-7,9-7,6-6,5-3,5 3,11-7,11-7,7-3,11 | Массив неупорядочен. Подсчитать, сколько пар равных элементов и расположенных на соседних местах содержится в массиве. Первую пару равных элементов поменять местами с последней парой. | |
(по возрастанию) | 1,1-4,4-4,1-1,1 3,5-3,7-7,7-7,5-3,5 3,11-7,11-7,7-3,11 | Массив неупорядочен. Заменить все элементы, для которых находится только один равный ему, на наименьший элемент этого массива. | |
(по убыванию) | 4,1-4,3-7,3-7,1-4,1 1,5-1,9-7,9-7,3-4,5-1,5 3,11-7,11-7,7-3,11 | Массив неупорядочен. Все элементы, для которых находится хотя бы один равный ему элемент, переписать в конец массива. | |
(по возрастанию) | 3,1-3,5-7,1-3,1 6,4-9,7-9,4-6,4 4,8-4,11-7,11-4,8 | Массив неупорядочен. Если в массиве обнаружится группа, состоящая из трех и более подряд стоящих нулей, то переписать ее в начало массива | |
(по убыванию) | 1,1-7,7-7,1-1,1 1,3-1,9-4,9-4,6-1,3 3,11-7,11-7,7-3,11 | Массив неупорядочен. Группу, содержащую наибольшее число подряд идущих одинаковых элементов, поставить после минимального элемента массива | |
(по возрастанию) | 5,1-5,5-9,1-5,1 1,8-4,11-4,5-1,8 3,11-7,11-7,7-3,11 | Массив неупорядочен. Группу, содержащую наибольшее число подряд идущих отрицательных элементов, поставить перед минимальным элементом этого массива | |
(по убыванию) | 1,3-1,7-3,7-3,3-1,3 7,1-5,3-5,7-7,9-7,1 3,11-7,11-7,7-3,11 | Массив упорядочен. Группу, содержащую наибольшее число равных положительных элементов, в начало массива | |
(по возрастанию) | 1,1-4,4-7,1-1,1 5,5-5,9-7,9-7,5-5,5 1,11-4,11-4,8-1,11 | Массив упорядочен. Группу элементов с наибольшим числом подряд идущих положительных элементов, кратных двум, перенести в конец массива | |
(по убыванию) | 1,1-4,4-7,1-1,1 1,6-1,9-4,9-4,6-1,6 3,11-7,11-7,7-3,11 | Массив упорядочен. Все положительные элементы, кратные 5, переписать в конец массива | |
(по возрастанию) | 1,1-4,4-7,1-1,1 2,5-2,7-5,7-5,5-2,5 6,8-3,11-6,11-6,8 | Массив упорядочен. Заменить все элементы, для которых находится только один равный ему, на наименьший элемент этого массива. | |
(по убыванию) | 1,3-1,7-3,7-3,3-1,3 7,1-5,3-5,7-7,9-7,1 3,11-7,11-7,7-3,11 | Массив упорядочен. Все элементы, для которых находится хотя бы один равный ему элемент, переписать в конец массива. | |
(по возрастанию) | 1,4-4,4-4,1-1,4 3,5-3,7-6,7-6,5-3,5 1,8-4,11-4,8-1,8 | Массив упорядочен. Если в массиве обнаружится группа, состоящая из трех и более подряд стоящих нулей, то переписать ее в начало массива |
* контуры заданы координатами узлов контуров: i1,j1 - i2,j2- … - in,jn,
где ik, - номер строки k-го узла, jk – номер столбца k-го узла.
Последовательность выполнения работы
Выполнение задания состоит из следующих этапов:
1. Определить необходимую для выполнения задания размерность матрицы, т.е. значения М и N. Следует учитывать, что правая и нижняя границы контуров не должны совпадать с границами матрицы.
Например, если задан контур 1,1-1,2-3,2-3,1-1,1, то размерность матрицы должна быть не менее 4х3 (на рисунке 1 контур обозначен цветом).
i j | ||||
-3 | ||||
-24 | -6 | |||
-44 | ||||
-5 | ||||
-35 | -4 | -50 | ||
рис. 1. Схема контура |
2. Сформировать файл исходных данных на диске. Записать в него элементы матрицы. Значения элементам матрицы задаются случайным образом.
3. Составить программу, которая выполняет следующие операции:
Ввести матрицу из файла исходных данных. Введенную матрицу вывести на экран, выделяя различными цветами элементы, входящие в контуры. Элементы матрицы, расположенные за пределами всех заданных контуров, выводить белым цветом на черном фоне.
Пользовательскую функцию настройки цветов текста и фона описать следующим образом:
void SetColor(int text, int background)
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut,(WORD)((background << 4)|text));
}
Параметры text и background – коды цветов текста и фона. Соответствие кодов и названий цвета следующее:
код | название цвета | |
Black | черный | |
Blue | синий | |
Green | зеленый | |
Cyan | голубой | |
Red | красный | |
Magenta | лиловый | |
Brown | желтый | |
LightGray | белый | |
DarkGray | серый | |
LightBlue | светло-синий | |
LightGreen | светло-зеленый | |
LightCyan | светло-голубой | |
LightRed | светло-красный | |
LightMagenta | светло-лиловый | |
Yellow | светло-желтый | |
White | ярко-белый |
Сформировать три одномерных массива (А, B, и C) из элементов матрицы, расположенных внутри заданных контуров. В процессе формирования массивов обход матрицы внутри контуров выполнять по строкам. Каждый из полученных массивов вывести на экран.
Например, из элементов матрицы, входящих в заданный в п.1 контур, будет сформирован следующий массив:
а0 | а1 | а2 | а3 | а4 | а5 |
-6 | -44 |
Сформировать одномерный массив D из элементов матрицы, расположенных за пределами всех заданных контуров. Полученный массив вывести на экран.
Для рассматриваемого примера массив D будет следующим:
d0 | d1 | d2 | d3 | d4 | d5 | d6 | d7 | d8 | d9 | d10 | d11 | d12 | d13 | d14 | d15 |
-3 | -24 | -5 | -35 | -4 | -50 |
Если в начале задания, расположенного в колонке 4 таблицы, стоит фраза «Массив неупорядочен», то необходимо для каждого из полученных 4-х одномерных массивов выполнить это задание (в противном случае этот пункт временно пропустить). Скорректированные массивы вывести на экран. Алгоритм обработки массива описать с помощью процедуры пользователя. Организовать обращение к данной процедуре 4 раза для каждого из массивов.
Разработать алгоритм сортировки одномерного массива в заданном направлении. Описать данный алгоритм с помощью пользовательской функции. Организовать обращение к данной функции 4 раза для выполнения сортировки каждого из массивов. Каждый из отсортированных массивов вывести на экран (для вывода массива описать отдельную функцию).
Если в начале задания, расположенного в колонке 4 таблицы, стоит фраза «Массив упорядочен», то необходимо для каждого из полученных 4-х одномерных массивов выполнить это задание (В противном случае этот пункт был уже выполнен ранее). Скорректированные массивы вывести на экран. Алгоритм обработки массива описать с помощью функции пользователя. Организовать обращение к данной функции 4 раза для каждого из массивов.
Вставить скорректированные массивы в матрицу:
· Массивы А, B, и C расположить внутри соответствующих контуров, выполняя обход матрицы ПО СТОЛБЦАМ;
· массив D поместить в межконтурное пространство, выполняя обход матрицы ПО СТРОКАМ.
Полученную матрицу вывести на экран. При выводе элементы каждого контура должны быть окрашены различными цветами. Таким образом, при выводе матрицы должны быть использованы 4 различных (произвольных) цвета текста.
4. Сформировать пояснительную записку к курсовой работе.