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

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

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

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

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

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

После ввода чисел при нажатии на кнопку операции запускается алгоритм, соответственно: сложения (рисунок 3), вычитания (рисунок 4), умножения (рисунок 5) или деления (рисунок 6). В делении проверяется равно ли какое-то число 0, в случае если такое число есть, то выводится ошибка.

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

Рисунок 4 – Схема алгоритма операции вычитания

Рисунок 5 – Схема алгоритма операции умножения

Рисунок 6 – Схема алгоритма операции деления

Для операции деления (рисунок 6) перед выполнением вычисления производится проверка деления на 0 – если делитель равен 0, выводится соответствующая ошибка.

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

#pragma once

namespace Calc {

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 button1_Click(System::Object^ sender, System::EventArgs^ e) {

this->Close();

}

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

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

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

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

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

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

}

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

double i1, i2, i3;

this->lblOper->Text = L"Сложение";

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

// Проверка на пустое поле txt1

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

this->lblErr->Text = L"Внимание: Первое поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

}

// Проверка на пустое поле txt2

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

this->lblErr->Text = L"Внимание: Второе поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

}

i1 = Convert::ToDouble(txt1->Text->Replace('.', ','));

i2 = Convert::ToDouble(txt2->Text->Replace('.', ','));

i3 = i1 + i2;

this->txtResult->Text = Convert::ToString(i3);

}

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

double i1, i2, i3;

this->lblOper->Text = L"Деление";

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

// Проверка на пустое поле txt1

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

this->lblErr->Text = L"Внимание: Первое поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

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

}

// Проверка на пустое поле txt2

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

this->lblErr->Text = L"Внимание: Второе поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

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

}

i1 = Convert::ToDouble(txt1->Text->Replace('.', ','));

i2 = Convert::ToDouble(txt2->Text->Replace('.', ','));

if (i2 == 0)

{

this->lblErr->Text = L"Внимание! Делить на ноль нельзя.";

return;

}

i3 = i1 / i2;

this->txtResult->Text = Convert::ToString(i3);

}

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

double i1, i2, i3;

this->lblOper->Text = L"Вычитание";

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

// Проверка на пустое поле txt1

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

this->lblErr->Text = L"Внимание: Первое поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

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

}

// Проверка на пустое поле txt2

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

this->lblErr->Text = L"Внимание: Второе поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

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

}

i1 = Convert::ToDouble(txt1->Text->Replace('.', ','));

i2 = Convert::ToDouble(txt2->Text->Replace('.', ','));

i3 = i1 - i2;

this->txtResult->Text = Convert::ToString(i3);

}

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

double i1, i2, i3;

this->lblOper->Text = L"Умножение";

// Проверка на пустое поле txt1

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

this->lblErr->Text = L"Внимание: Первое поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

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

}

// Проверка на пустое поле txt2

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

this->lblErr->Text = L"Внимание: Второе поле не может быть пустым.";

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

// Подсвечиваем поле красным

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

return;

}

else {

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

// Если поле не пустое, сбрасываем цвет

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

}

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

this->txtResult->Clear();

i1 = Convert::ToDouble(txt1->Text->Replace('.', ','));

i2 = Convert::ToDouble(txt2->Text->Replace('.', ','));

i3 = i1 * i2;

this->txtResult->Text = Convert::ToString(i3);

}

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

System::EventArgs^ e) {

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

String^ text = txt1->Text;

// Проверяем, содержит ли текст только цифры и одну точку

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

// Если символ не является цифрой и не является точкой

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

// Удаляем последний символ, который был введён

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

return;

}

}

}

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

System::EventArgs^ e) {

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

String^ text = txt2->Text;

// Проверяем, содержит ли текст только цифры и одну точку

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

// Если символ не является цифрой и не является точкой

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

// Удаляем последний символ, который был введён

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

return;

}

}

}

};

}

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