Главная страница
Навигация по странице:

  • 1.Общее задание: 1) Изучите вопросы использования указателей и программирования

  • ListBox

  • 4)Разработка схем алгоритмов функций: Схема алгоритма функции del

  • 5)Разработка программного кода приложение

  • Лр по языкам программирования вариант 23. Отчёт по лабораторной работе №4 Терешонок Арсений. Лабораторная работа 4 Создание приложений Windows Forms для формирования и обработки динамических одномерных массивов


    Скачать 213.44 Kb.
    НазваниеЛабораторная работа 4 Создание приложений Windows Forms для формирования и обработки динамических одномерных массивов
    АнкорЛр по языкам программирования вариант 23
    Дата13.06.2021
    Размер213.44 Kb.
    Формат файлаdocx
    Имя файлаОтчёт по лабораторной работе №4 Терешонок Арсений .docx
    ТипЛабораторная работа
    #217043

    Федеральное агентство связи

    Ордена Трудового Красного Знамени федеральное государственное бюджетное

    образовательное учреждение высшего образования

    «Московский технический университет связи и информатики»
    Кафедра информатики

    ЛАБОРАТОРНАЯ РАБОТА №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.


    написать администратору сайта