Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики» Кафедра информатики ЛАБОРАТОРНАЯ РАБОТА № 5 «Создание приложений Windows Forms для формирования и обработки двумерных массивов» по языкам программирования Москва 2021 г. 1) Индивидуальное задание на разработку проекта Вариант – 16 16) Сформируйте двумерный массив K(m,n) заданных размеров из случайных целых чисел в заданном диапазоне. Преобразуйте массив перестановкой столбцов: первого с последним, второго с предпоследним и т.д. 2) Формализация задачи Из условия задания следует, что его выполнение распадается на следующие этапы, реализуемые соответствующими функциями приложения: ввод исходных данных (размеры исходного массива и границы диапазона случайных чисел) – функция GetInt; формирование исходного массива – функция input; вывод исходного массива в заданный список (элемент управления ListBox) формы – функция output; преобразование исходного массива перестановкой столбцов первого с последним, второго с предпоследним – функция task; эта функция использует функцию revers для перестановки элементов в одной строке исходного массива ; вывод нового массива – функция output; освобождение памяти сформированных массивов – функция del. Вызов функций формирования и вывода динамических массивов производится в событийной процедуре по нажатию кнопки Решить. 3) Разработка графического интерфейса пользователя приложения 2 Рис.1 – Графический интерфейс проекта. 3 Объект Класс объекта Свойство Значение свойства Форма Form1 Name Text Form1 BackColor (Palette) Name Menu txtM TextAlign Font Right Arial; 9pt Enabled Name True txtN TextAlign Font Right Arial; 9pt Enabled True Свойство Значение свойства Name txtA TextAlign Font Right Arial; 9pt Enabled Name True txtB TextAlign Font Right Arial; 9pt Enabled Name True cmdTask Text Font Решить Arial;9pt Name cmdExit Text Font Выход Arial;9pt Name lstMatr1 ScrollAlwaysVisible Font True HorizontalScrollbar True TabStop Name False lstMatr2 ScrollAlwaysVisible Font True Текстовое поле Текстовое поле Объект Текстовое поле Текстовое поле TextBox TextBox Класс объекта TextBox TextBox Кнопка Button Кнопка Button Список ListBox Список ListBox Динамические двумерные массивы 4 Courier New; 9pt. Courier New; 9pt. HorizontalScrollbar True TabStop False 4) Разработка схемы алгоритма функции Начало task() Вх.параметры: Массив matr[m,n] размеры массива m и n Возвращаемое значение: Преобразованный массив matr[m,n] Начало revers() k=0 p=n-1 k=0 j=n/2 i=[0;m-1] i=[0,j-1] revers(matr,n) k=k+1 u=matr[p-i] matr[p-i]=matr[k] matr[k]=u k=k+1 Конец task() Конец revers() Вх.параметры: Массив matr[n] размер массива n 5) Разработка программного кода приложения Рис. 2 – Программные коды заголовочных файлов Task.h. Рис. 3 – Программные коды заголовочных файлов stdafx.h. 5 Рис. 4 – Программный код, task.cpp. 6 Рис. 5 – Программный код файла GetPut.cpp. 7 Рис. 6 – Программные коды событийных процедур. 6)Результаты выполнения проекта 8 Доказательство правильности результатов 1. На первом рис. число столбцов задано нечётным числом, поэтому центральный элемент не нужно переставлять, и он остаётся без изменения, а другие элементы переставляются из начала в конец, и наоборот. 2. На втором рис. число столбцов задано чётным числом, это означает, что все элементы будут переставляться местами, а именно первый с последним, второй с предпоследним и т.д. Исходя из этого следует вывод, что приложение работает исправно. 9