Курсовая работа: Разработка Windows-приложения нахождения НОД двух целых чисел с помощью алгоритма Евклида

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

- скорость жесткого диска: для повышения производительности установите Windows и Visual Studio на твердотельный накопитель (SSD);

- видеоадаптер с минимальным разрешением 720p (1280 на 720 пикселей); для оптимальной работы Visual Studio рекомендуется разрешение WXGA (1366 на 768 пикселей) или более высокое.

2.5 Вызов программы

Вызов программы осуществляется через стандартный запуск программ в Visual Studio 2019 - Локальный отладчик Windows. При запуске открывается окно формы. В полях коэффициентов заданы начальные нули, остальные поля пусты.

2.6 Входные данные

Входные данные вводятся при помощи текстовых полей, затем программа преобразует эти данные из строки в число. Название формы располагается сверху. Первые два текстовых поля подписаны ярлыками в соответствии с коэффициентами - a =, b=. Кнопка называется Вычислить, она запускает процесс вычислений. Текстовое поле для вывода результата вычисления подписано НОД =. Текстовое поле для вывода комментариев подписано Комментарии.

2.7 Выходные данные

Выходные данные выводятся в текстовом поле НОД = и Комментарии. В первом выводится значение вычисленного НОД. Во втором выводятся сообщения "Ошибок нет", "Введите положительные числа" в зависимости от введенных значений.

2.8 Описание тестовых прогонов

Описание контрольных примеров приведено в таблице 2.1:

Таблица 2.1 - Контрольные примеры

Входные данные

Выходные данные

1) 18, 30

6, Ошибок нет

2) 255, 15

15, Ошибок нет

3) 500, 150

50, Ошибок нет

4) -18, 30

" ", Введите положительные числа

5) 255, -15

" ", Введите положительные числа

6) -500, -150

" ", Введите положительные числа

Результаты тестовых прогонов на контрольных примерах 1 - 6 (таблица 2.1) представлены на рисунках 2.3 - 2.8.

Вывод результата в примерах 1 - 3:

Рисунок 2.3 Проверка работы программы на контрольном примере 1

Рисунок 2.4 Проверка работы программы на контрольном примере 2

Рисунок 2.5 Проверка работы программы на контрольном примере 3

Вывод сообщения о введенном отрицательном числе 4 - 6:

Рисунок 2.6 Проверка работы программы на контрольном примере 4

Рисунок 2.7 Проверка работы программы на контрольном примере 5

Рисунок 2.8 Проверка работы программы на контрольном примере 6

2.9 Инструкция по использованию программы

В первых двух текстовых полях, подписанных "a=", "b=" вводятся значения для вычисления НОД. Затем следует нажать кнопку "Вычислить". Ответ будет выведен в текстовом поле. Если введено отрицательное число, в поле "НОД" не будет ничего выведено, а в поле "Комментарии" будет выведено сообщение "Введите положительные числа".

Кнопка "Вычислить" запускает процесс вычисления. Ее следует нажимать только в том случае, когда поля ввода заполнены корректно. Если в них останутся нули, то программа не будет работать, пока не будут введены числа.

Заключение

В результате выполнения курсовой работы было создано приложение, позволяющее вычислять НОД двух целых чисел с помощью алгоритма Евклида.

При его создании были использованы функция sqrt(), Text, ToString().

Приложение реализовано при помощи Windows Forms.

Подобное приложение актуально и полезно, так как оно позволяет быстро решить одну из элементарных математических задач, которая очень часто встречается при выполнении вычислений. Это приложение может значительно увеличить скорость выполнения вычислений и при этом увеличит их точность: оно не позволит совершить вычислительную ошибку или использовать неправильную формулу, все вычисления выполняет машина.

Таким образом, в процессе выполнения курсовой работы был глубже изучен язык программирования C++ и его возможности, возможности Microsoft Visual Studio, надлежащим образом было изучено создание и предназначение Windows-приложений.

Список использованных источников

1. Программирование на языке высокого уровня. Программирование на языке C++: учебное пособие / Т.И. Немцова, С.Ю. Голова, А.И. Терентьев; под ред. Л.Г. Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2021. - 512 с. - Текст: электронный. - URL: https://znanium.com/catalog/product/1172261

2. Основы программирования на языке С: учебное пособие / В.Г. Дорогов, Е.Г. Дорогова, Л.Г. Гагарина - М.: ИД ФОРУМ: ИНФРА-М, 2021. - 224 с. - Текст: электронный. - URL: https://znanium.com/catalog/document?id=369664

3. Программирование графики наС++. Теория и примеры: учебное пособие / В.И. Корнеев, Л.Г. Гагарина, М.В. Корнеева. - М.: ФОРУМ: ИНФРА-М, 2019. - 517 с. - Текст: электронный. - URL: https://znanium.com/catalog/product/1018909

4. Язык С++ и объектно-ориентированное программирование в С++. Лабораторный практикум: Учебное пособие для вузов / Ашарина И.В., Крупская Ж.Ф. - М.: Гор. линия - Телеком, 2018. - 232 с. - Текст: электронный. - URL: http://new.znanium.com/catalog/product/973780

5. Объектно-ориентированное программирование на С++: учебник / И.В. Баранова, С.Н. Баранов, И.В. Баженова [и др.]. - К.: Сиб. федер. ун-т, 2019. - 288 с. - Текст: электронный. - URL: https://znanium.com/catalog/product/1819676

Приложение 1

Листинг программы Калькулятор

#pragma once

namespace Project2

{

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

/// <summary>

/// Сводка для MyForm

/// </summary>

public ref class MyForm : public System::Windows::Forms::Form

{

public:

MyForm(void)

{

InitializeComponent();

//

//TODO: добавьте код конструктора

//

}

protected:

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

~MyForm()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::Label^ label1;

protected:

private: System::Windows::Forms::Label^ label2;

private: System::Windows::Forms::Label^ label3;

private: System::Windows::Forms::Label^ label4;

private: System::Windows::Forms::Button^ button1;

private: System::Windows::Forms::TextBox^ textBox1;

private: System::Windows::Forms::TextBox^ textBox2;

private: System::Windows::Forms::TextBox^ textBox3;

private: System::Windows::Forms::TextBox^ textBox4;

private:

/// <summary>

/// Обязательная переменная конструктора.

/// </summary>

System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

/// <summary>

/// Требуемый метод для поддержки конструктора - не изменяйте

/// содержимое этого метода с помощью редактора кода.

/// </summary>

void InitializeComponent(void)

{

this->label1 = (gcnew System::Windows::Forms::Label());

this->label2 = (gcnew System::Windows::Forms::Label());

this->label3 = (gcnew System::Windows::Forms::Label());

this->label4 = (gcnew System::Windows::Forms::Label());

this->button1 = (gcnew System::Windows::Forms::Button());

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->textBox2 = (gcnew System::Windows::Forms::TextBox());

this->textBox3 = (gcnew System::Windows::Forms::TextBox());

this->textBox4 = (gcnew System::Windows::Forms::TextBox());

this->SuspendLayout();

//

// label1

//

this->label1->AutoSize = true;

this->label1->Location = System::Drawing::Point(73, 27);

this->label1->Name = L"label1";

this->label1->Size = System::Drawing::Size(25, 16);

this->label1->TabIndex = 0;

this->label1->Text = L"a =";

this->label1->Click += gcnew System::EventHandler(this, &MyForm::label1_Click);

//

// label2

//

this->label2->AutoSize = true;

this->label2->Location = System::Drawing::Point(21, 70);

this->label2->Name = L"label2";

this->label2->Size = System::Drawing::Size(25, 16);

this->label2->TabIndex = 1;

this->label2->Text = L"b =";

//

// label3

//

this->label3->AutoSize = true;

this->label3->Location = System::Drawing::Point(49, 209);

this->label3->Name = L"label3";

this->label3->Size = System::Drawing::Size(36, 16);

this->label3->TabIndex = 2;

this->label3->Text = L"НОД";

//

// label4

//

this->label4->AutoSize = true;

this->label4->Location = System::Drawing::Point(84, 311);

this->label4->Name = L"label4";

this->label4->Size = System::Drawing::Size(96, 16);

this->label4->TabIndex = 3;

this->label4->Text = L"Комментарии";

//

// button1

//

this->button1->Location = System::Drawing::Point(229, 63);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(75, 23);

this->button1->TabIndex = 4;

this->button1->Text = L"Вычислить";

this->button1->UseVisualStyleBackColor = true;

//

// textBox1

//

this->textBox1->Location = System::Drawing::Point(373, 108);

this->textBox1->Name = L"textBox1";

this->textBox1->Size = System::Drawing::Size(100, 22);

this->textBox1->TabIndex = 5;

//

// textBox2

//

this->textBox2->Location = System::Drawing::Point(52, 126);

this->textBox2->Name = L"textBox2";

this->textBox2->Size = System::Drawing::Size(100, 22);

this->textBox2->TabIndex = 6;

//

// textBox3

//

this->textBox3->Location = System::Drawing::Point(266, 143);

this->textBox3->Name = L"textBox3";

this->textBox3->Size = System::Drawing::Size(100, 22);

this->textBox3->TabIndex = 7;

//

// textBox4

//

this->textBox4->Location = System::Drawing::Point(161, 181);

this->textBox4->Name = L"textBox4";

this->textBox4->Size = System::Drawing::Size(100, 22);

this->textBox4->TabIndex = 8;

//

// MyForm

//

this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(753, 398);

this->Controls->Add(this->textBox4);

this->Controls->Add(this->textBox3);

this->Controls->Add(this->textBox2);

this->Controls->Add(this->textBox1);

this->Controls->Add(this->button1);

this->Controls->Add(this->label4);

this->Controls->Add(this->label3);

this->Controls->Add(this->label2);

this->Controls->Add(this->label1);

this->Name = L"MyForm";

this->Text = L"MyForm";

this->ResumeLayout(false);

this->PerformLayout();

}

#pragma endregion

private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {

}

private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e)

{

}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

float a, b;

a = System::Double::Parse(this->textBox1->Text);

b = System::Double::Parse(this->textBox2->Text);

if ((a >= 0) && (b >= 0))

{

while (a != b)

{

if (a > b) a = a - b;

else b = b - a;

}

textBox3->Text = a.ToString();

textBox4->Text = "Ошибок нет";

}

else

{

textBox3->Text = " ";

textBox4->Text = "Введите положительные числа";

}

}

Источник: https://otherreferats.allbest.ru/download/1487190/