Лр по языкам программирования вариант 23. Отчёт по лабораторной работе №4 Терешонок Арсений. Лабораторная работа 4 Создание приложений Windows Forms для формирования и обработки динамических одномерных массивов
Скачать 213.44 Kb.
|
Федеральное агентство связи Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики» Кафедра информатики ЛАБОРАТОРНАЯ РАБОТА №4 «Создание приложений Windows Forms для формирования и обработки динамических одномерных массивов» по Языкам Программирования Выполнил: студент гр. БИК2001 Терешонок А.А. Проверил: доц. Воробейчиков Л.А. Москва 2020 г. 1.Общее задание: 1) Изучите вопросы использования указателей и программирования алгоритмов формирования и обработки одномерных динамических массивов. 2) Выберите вариант задания из таблицы 1. 3) Разработайте проект графического интерфейса пользователя. 4) Решите поставленную задачу формирования и обработки динамических массивов. Для этого разработайте схемы алгоритмов и программные коды следующих функций: • функции ввода и контроля дополнительных данных (при наличии таких данных в индивидуальном задании); • функции ввода элементов исходного массива из многострочного текстового поля, создания и формирования динамического массива из этих элементов; • функции создания нового динамического одномерного массива согласно вашему индивидуальному заданию. • функции вывода динамического одномерного массива в элемент управления ListBox. 5) Разработайте программный код событийной процедуры, которая вызывает описанные выше функции для решения поставленной задачи. 6) Создайте проект приложения Windows Form, содержащий: • графический интерфейс; • файлы с раздельно откомпилированными программными кодами функций, необходимых для решения задачи: • функций ввода данных, создания и формирования массива и вывода результатов; • функций, решающих поставленную задачу. • заголовочный файл с прототипами разработанных функций; • событийную процедуру, которая должна содержать только операторы вызова пользовательских функций. 7) Подготовьте тесты для контрольного решения задачи, предусмотрев различные значения исходного массива данных для решения. 8) Выполните проект и получите результаты. 9) Докажите правильность полученных результатов на заранее разработанных тестах. Индивидуальное задание представлено на рисунке 1. Рисунок 1 – вариант индивидуального задания 2)Формализация задания: Из условия задания следует, что его выполнение распадается на следующие этапы, реализуемые соответствующими функциями приложения: Ввод к – функция inputk формирование исходного массива чтением чисел из многострочного текстового поля формы– функция input; удаление элемента - функция del; создание нового массива – функция task; вывод нового массива из простых чисел в заданный список - функция output. Вызов функций формирования динамических массивов и вывода нового массива производится в событийной процедуре по нажатию кнопки Решение. 3)Разработка графического интерфейса пользователя приложения: Графический интерфейс проекта изображён на рисунке 2. Рисунок 2 – графический интерфейс проекта 4)Разработка схем алгоритмов функций: Схема алгоритма функции del представена на рисунке 3. Рисунок 3 – схема алгоритма функции del Схема функции del представлена на рисунке 4. Рисунок 4 – схема алгоритма функции task 5)Разработка программного кода приложение: В данном проекте в соответствии с заданием я создал два файла: Файл GetPut.cpp с функциями ввода и вывода; Файл task_din.cpp содержащий функции, необходимые для решения задачи. Программный код файла GetPut.cpp представлен на рисунке 6. #include "stdafx.h" int inputk (TextBox^ TB) { String ^s = TB->Lines[0]; int k=Convert::ToInt32(s); return k;} int* input(int& n,TextBox^ TB) { if ((n = TB->Lines->Length)==0) { MessageBox::Show("Заполните текстовое поле","Ошибка",MessageBoxButtons::OK,MessageBoxIcon::Error); TB->Focus(); return 0; } int* mas = new int[n]; for (int i=0; i { String ^s = TB->Lines[i]; mas[i]=Convert::ToInt32(s); } return mas; } void output (int* mas,int n,ListBox^ Lb) { Lb->Items->Clear(); for (int i=0;i { String^ s =Convert::ToString(mas[i]); Lb->Items->Add(s); } if (!n) Lb->Items->Add("MAS EMPTY"); } Рисунок 6 – программный код функций ввода и вывода На рисунке 7 приведён программный код функций решения поставленной задачи. #include "stdafx.h" int* task(int* mas, int n,int& m,int k) { int p=0; for (int i=0; i { if (mas[i]%2==0 && mas[i] { m++; } } int* newmas = new int[m]; for (int i=0;i { if (mas[i]%2==0 && mas[i] { newmas[p]=mas[i]; p++; } } return newmas;} int* del(int* mas,int n,int k) { for (int i=0;i { if (i>k-1) { mas[i]=mas[i+1]; } } return mas; } Рисунок 7 – программный код функций решающих поставленную задачу Программный код заголовочного файла task_din.h представлен на рисунке 8. using namespace System; using namespace System::Windows::Forms; int* input (int& ,TextBox^); void output(int*,int, ListBox^); int inputk (TextBox^ TB); int* task(int*, int ,int&,int); int* del(int* mas,int n,int k); Рисунок 8 – программный код заголовочного файла Программный код событийных процедур представлен на рисунке 9. #pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { lstMas2->Items->Clear(); int n=0; int k=0; int m=0; int* newmas; int* mas=input(n,txtMas1); if (!mas) return; k=inputk(txtK); if (k>n) { int* newmas=task(mas,n,m,k); output(newmas,m,lstMas2); } else {mas=del(mas,n,k); output(mas,n-1,lstMas2);} if (mas) delete [] mas; if (newmas) delete[] newmas; } private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } private: System::Void lstMas1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { } private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { this->Close(); } private: System::Void txtK_TextChanged(System::Object^ sender, System::EventArgs^ e) { } }; } Рисунок 9 – программный код событийных процедур 6) Результаты выполнения программы: На рисунках 10-11 приведены результаты работы приложения с различными исходными данными. Рисунок 10 – результат работы программы при k<размера массива. Рисунок 11 – результат работы программы при k>размера массива 7) Доказательство правильности результата: Видно на рисунках 10-11. |