Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 сем / лаба 3.docx
Скачиваний:
0
Добавлен:
03.06.2025
Размер:
511 Кб
Скачать
☆

2 Схемы алгоритмов

При нажатии на кнопку «Закрыть», выполняется алгоритм закрытия программы (рисунок 1).

Рисунок 1 – Схема алгоритма обработки нажатия на кнопку «Закрыть»

При нажатии на «Сброс» – исполняется алгоритм очистки всех строк текстовых полей и меток (рисунок 2).

Рисунок 2 – Схема алгоритма обработки нажатия на кнопку «Сброс»

При нажатии на кнопку «Решить», выполняется алгоритм, складывающий заданные значения (рисунок 3).

Рисунок 3 – Схема алгоритма нажатия кнопки «Решить»

3 Текст программы

#pragma once

#include <cmath>

namespace sqr {

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;

}

}

#pragma endregion

private: System::Void btnReset_Click_Click(System::Object^ sender,

System::EventArgs^ e) {

this->lblComment->Text = L"";

this->textBoxA->Text = L"";

this->textBoxB->Text = L"";

this->textBoxC->Text = L"";

this->textBoxx1->Text = L"";

this->textBoxx2->Text = L"";

this->lbl->Text = L"";

}

private: System::Void btnClose_Click_Click(System::Object^ sender,

System::EventArgs^ e) {

this->Close();

}

private: System::Void textBoxA_TextChanged(System::Object^ sender,

System::EventArgs^ e) {

textBoxA->BackColor = System::Drawing::Color::White;

String^ text = textBoxA->Text; // Получаем текущий текст

for (int i = 0; i < text->Length; i++) {

if (!Char::IsDigit(text[i]) && text[i] != '.' && text[i] != '-') {

textBoxA->Text = text->Remove(i, 1);

break;

}

}

}

private: System::Void btnSolve_Click_Click(System::Object^ sender,

System::EventArgs^ e)

{

double a, b, c, x1, x2, D;

// Очищаем поля перед вычислениями

textBoxx1->Text = L"";

textBoxx2->Text = L"";

this->lblComment->Text = L"";

this->lbl->Text = L"";

// Проверяем пустые поля и выделяем их

if (textBoxA->Text->Length == 0) {

textBoxA->BackColor = System::Drawing::Color::Pink;

}

else {

textBoxA->BackColor = System::Drawing::Color::White;

}

if (textBoxB->Text->Length == 0) {

textBoxB->BackColor = System::Drawing::Color::Pink;

}

else {

textBoxB->BackColor = System::Drawing::Color::White;

}

if (textBoxC->Text->Length == 0) {

textBoxC->BackColor = System::Drawing::Color::Pink;

}

else {

textBoxC->BackColor = System::Drawing::Color::White;

}

// Если есть ошибки, завершаем выполнение

if (textBoxA->Text->Length == 0|| textBoxB->Text->Length == 0||

textBoxC->Text->Length == 0) {

this->lbl->Text = L"Внимание: Все поля должны быть заполнены.";

return;

}

// Конвертируем значения в числа

a = System::Convert::ToDouble(textBoxA->Text->Replace('.', ','));

b = System::Convert::ToDouble(textBoxB->Text->Replace('.', ','));

c = System::Convert::ToDouble(textBoxC->Text->Replace('.', ','));

// Проверяем уравнение

if (a != 0) {

D = b * b - 4 * a * c;

if (D > 0) {

x1 = (-b + sqrt(D)) / (2 * a);

x2 = (-b - sqrt(D)) / (2 * a);

this->lblComment->Text = L"Дискриминант > 0. Уравнение имеет

два корня.";

textBoxx1->Text = System::Convert::ToString(x1);

textBoxx2->Text = System::Convert::ToString(x2);

}

else if (D == 0) {

x1 = -b / (2 * a);

x2 = -b / (2 * a);

this->lblComment->Text = L"Дискриминант = 0. Уравнение имеет

два одинаковых корня.";

textBoxx1->Text = System::Convert::ToString(x1);

textBoxx2->Text = System::Convert::ToString(x2);

}

else {

this->lblComment->Text = L"Дискриминант < 0. Уравнение не

имеет действительных корней.";

}

}

else {

// Линейное уравнение bx + c = 0

if (b != 0) {

x1 = -c / b;

this->lblComment->Text = L"Линейное уравнение - имеет

один корень.";

textBoxx1->Text = System::Convert::ToString(x1);

}

else if (c != 0) {

this->lblComment->Text = L"Равенство является неверным.";

}

else {

this->lblComment->Text = L"Равенство является верным.";

}

}

}

private: System::Void textBoxB_TextChanged(System::Object^ sender,

System::EventArgs^ e) {

textBoxB->BackColor = System::Drawing::Color::White;

String^ text = textBoxB->Text; // Получаем текущий текст

for (int i = 0; i < text->Length; i++) {

if (!Char::IsDigit(text[i]) && text[i] != '.' && text[i] != '-') {

textBoxB->Text = text->Remove(i, 1);

break;

}

}

}

private: System::Void textBoxC_TextChanged(System::Object^ sender,

System::EventArgs^ e) {

textBoxC->BackColor = System::Drawing::Color::White;

String^ text = textBoxC->Text; // Получаем текущий текст

for (int i = 0; i < text->Length; i++) {

if (!Char::IsDigit(text[i]) && text[i] != '.' && text[i] != '-') {

textBoxC->Text = text->Remove(i, 1);

break;

}

}

}

};

}

Соседние файлы в папке 2 сем