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;
}
}
}
};
}
