2 Схемы алгоритмов
При нажатии на кнопку с любым арифметическим действием вызывается функция Protect(). При осуществлении каждой арифметической операции будет выполняться функция проверки корректности вводимых данных. Алгоритм работы функции представлен ниже (рисунок 1).
Рисунок 1 – Схема алгоритма функции Protect()
Рисунок 1 – Схема алгоритма функции Protect(), продолжение
Рисунок 1 – Схема алгоритма функции Protect(), продолжение
Рисунок 1 – Схема алгоритма функции Protect(), продолжение
При нажатии на кнопку «Закрыть», выполняется функция закрытия программы (рисунок 2).
Рисунок 2 – Схема алгоритма функции обработки события нажатия кнопки «Закрыть»
При нажатии на кнопку «Сброс», выполняется функция, представленная на рисунке 3.
Рисунок 3 – Схема алгоритма функции обработки события нажатия кнопки «Сброс»
При нажатии на кнопку «Сложить», выполняется функция, складывающая заданные значения (рисунок 4).
Рисунок 4 – Схема алгоритма функции обработки события нажатия кнопки «Сложить»
При нажатии на кнопку «Вычесть», выполняется функция вычитания заданных чисел (рисунок 5).
Рисунок 5 – Схема алгоритма функции обработки события нажатия кнопки «Вычесть»
При нажатии на кнопку «Умножить», выполняется функция умножения заданных значений (рисунок 6).
Рисунок 6 — Схема алгоритма функции обработки события нажатия кнопки «Умножить»
При нажатии на кнопку «Делить», выполняется функция деления заданных значений (рисунок 7).
Рисунок 7 – Схема алгоритма функции обработки события нажатия кнопки «Делить»
3 Текст программы
bool Protect() { // Функция проверки корректности ввода первого и второго числа
if ((txt1->Text->Length == 0) || (txt2->Text->Length == 0)) { return false; }
for (int i = 0; i < txt1->Text->Length; ++i) {
if ((txt1->Text[i] < '0' || txt1->Text[i] > '9') && (txt1- >Text[i] != '.') &&
(txt1->Text[i] != '-') && (txt1->Text[i] != ',')) {
return false;
}
else {
int countertochka = 0, countzap = 0;
for (int i = 0; i < txt1->Text->Length; ++i) {
if (txt1->Text[i] == '.' || txt1->Text[i] == ',') {
++countertochka;
++countzap;
else {return false;}
}
}
int countMinus = 0;
for (int i = 0; i < txt1->Text->Length; ++i) {
if (txt1->Text[i] == '-') {
countMinus++;
if (countMinus > 1) {
return false;
}
}
}
}
}
for (int i = 0; i < txt2->Text->Length; ++i) {
if ((txt2->Text[i] < '0' || txt2->Text[i] > '9') && (txt2- >Text[i] != '.') && (txt2->Text[i] != '-')
&& (txt2->Text[i] != ',')) {
return false;
}
else {
int countertoch = 0, countzap = 0;
for (int i = 0; i < txt2->Text->Length; ++i) {
if (txt2->Text[i] == '.' || txt2->Text[i] == ',') {
++countertoch;
++countzap;
else {return false;}
}
}
int countMinus = 0;
for (int i = 0; i < txt2->Text->Length; ++i) {
if (txt2->Text[i] == '-') {
countMinus++;
if (countMinus > 1) {
return false;
}
}
}
}
}
return true;
}
#pragma endregion
// Событие для кнопки "Закрыть"
private: System::Void btnClose_Click(System::Object^ sender, System::EventArgs^ e) {
this->Close();
}
// Событие для кнопки "Сложить
private: System::Void btnAdd_Click(System::Object^ sender, System::EventArgs^ e) {
if (Protect()) {
this->txtResult->Text = L""; // Обнуление ячейки "Результат"
this->lblError->Text = L""; // Обнуление ячейки "Ошибка"
this->lblErrorTxt->Text = L""; // Обнуление ячейки "Текст ошибки"
double i1, i2, i3; // Объявление глобальных переменных
// Замена точки на запятую
this->txt1->Text = this->txt1->Text->Replace(".", ",");
this->txt2->Text = this->txt2->Text->Replace(".", ",");
// Операция "Сложение"
this->lblOper->Text = L"Сложение";
i1 = System::Double::Parse(txt1->Text);
i2 = System::Double::Parse(txt2->Text);
i3 = i1 + i2;
this->txt1->Text = Convert::ToString(i1);
this->txt2->Text = Convert::ToString(i2);
this->txtResult->Text = Convert::ToString(i3);
}
else if (txt1->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите первое число.";
this->lblOper->Text = L"Сложение";
}
else if (txt2->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите второе число.";
this->lblOper->Text = L"Сложение";
}
else
{
this->lblError->Text = L"Ошибка!";
this->lblErrorTxt->Text = L"Введите корректные числовые значения.";
this->lblOper->Text = L"Сложение";
}
}
// Событие для кнопки "Сброс". Обнуление всех окон (возвращение приложения в
// изначальный вид)
private: System::Void btnReset_Click(System::Object^ sender, System::EventArgs^ e) {
this->lblOper->Text = L"";
this->txt1->Text = L"";
this->txt2->Text = L"";
this->txtResult->Text = L"";
this->lblError->Text = L"";
this->lblErrorTxt->Text = L"";
}
// Обнуление вывода результата, названия операции, сообщения об ошибке, если
// изменяется первое или второе число
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {
this->txtResult->Text = L"";
this->lblOper->Text = L"";
this->lblError->Text = L"";
this->lblErrorTxt->Text = L"";
}
private: System::Void textBox3_TextChanged(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void textBox2_TextChanged(System::Object^ sender, System::EventArgs^ e) {
this->txtResult->Text = L"";
this->lblOper->Text = L"";
this->lblError->Text = L"";
this->lblErrorTxt->Text = L"";
}
// Событие для кнопки "Разделить"
private: System::Void btnDivide_Click(System::Object^ sender, System::EventArgs^ e) {
if (Protect()) {
this->txtResult->Text = L""; // Обнуление ячейки "Результат"
this->lblError->Text = L""; // Обнуление ячейки "Ошибка"
this->lblErrorTxt->Text = L""; // Обнуление ячейки "Текст ошибки"
double i1, i2, i3; // Объявление глобальных переменных
// Замена точки на запятую
this->txt1->Text = this->txt1->Text->Replace(".", ",");
this->txt2->Text = this->txt2->Text->Replace(".", ",");
// Операция "Деление"
this->lblOper->Text = L"Деление";
i1 = System::Double::Parse(txt1->Text);
i2 = System::Double::Parse(txt2->Text);
if (i2 != 0) { // Проверка деления на ноль
i3 = i1 / i2;
this->txtResult->Text = Convert::ToString(i3);
this->txt2->Text = Convert::ToString(i2);
this->txt1->Text = Convert::ToString(i1);
}
else { // Если второе число равно ноль, то вывести сообщение об ошибке
this->txtResult->Text = L"";
this->lblError->Text = L"Ошибка!";
this->lblErrorTxt->Text = L"Делить на ноль нельзя.";
}
}
else if (txt1->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите первое число.";
this->lblOper->Text = L"Деление";
}
else if (txt2->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите второе число.";
this->lblOper->Text = L"Деление";
}
else {
this->lblError->Text = L"Ошибка!";
this->lblErrorTxt->Text = L"Введите корректные числовые значения.";
this->lblOper->Text = L"Деление";
}
}
// Событие для кнопки "Умножить"
private: System::Void btnMultiply_Click(System::Object^ sender,System::EventArgs^ e) {
if (Protect()) {
this->txtResult->Text = L""; // Обнуление ячейки "Результат"
this->lblError->Text = L""; // Обнуление ячейки "Ошибка"
this->lblErrorTxt->Text = L""; // Обнуление ячейки "Текст ошибки"
double i1, i2, i3; // Объявление глобальных переменных
// Замена точки на запятую
this->txt1->Text = this->txt1->Text->Replace(".", ",");
this->txt2->Text = this->txt2->Text->Replace(".", ",");
// Операция "Умножение"
this->lblOper->Text = L"Умножение";
i1 = System::Double::Parse(txt1->Text);
i2 = System::Double::Parse(txt2->Text);
i3 = i1 * i2;
this->txtResult->Text = Convert::ToString(i3);
this->txt1->Text = Convert::ToString(i1);
this->txt2->Text = Convert::ToString(i2);
}
else if (txt1->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите первое число.";
this->lblOper->Text = L"Умножение";
}
else if (txt2->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите второе число.";
this->lblOper->Text = L"Умножение";
}
else {
this->lblError->Text = L"Ошибка!";
this->lblErrorTxt->Text = L"Введите корректные числовые значения.";
this->lblOper->Text = L"Умножение";
}
}
// Событие для кнопки "Вычесть"
private: System::Void btnSubtract_Click(System::Object^ sender,System::EventArgs^ e) {
if (Protect()) {
this->txtResult->Text = L""; // Обнуление ячейки "Результат"
this->lblError->Text = L""; // Обнуление ячейки "Ошибка"
this->lblErrorTxt->Text = L""; // Обнуление ячейки "Текст ошибки"
double i1, i2, i3; // Объявление глобальных переменных
// Замена точки на запятую
this->txt1->Text = this->txt1->Text->Replace(".", ",");
this->txt2->Text = this->txt2->Text->Replace(".", ",");
// Операция "Вычитание"
this->lblOper->Text = L"Вычитание";
i1 = System::Double::Parse(txt1->Text);
i2 = System::Double::Parse(txt2->Text);
i3 = i1 - i2;
this->txtResult->Text = Convert::ToString(i3);
this->txt1->Text = Convert::ToString(i1);
this->txt2->Text = Convert::ToString(i2);
}
else if (txt1->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите первое число.";
this->lblOper->Text = L"Вычитание";
}
else if (txt2->Text->Length == 0)
{
this->lblErrorTxt->Text = L"Введите второе число.";
this->lblOper->Text = L"Вычитание";
}
else {
this->lblError->Text = L"Ошибка!";
this->lblErrorTxt->Text = L"Введите корректные числовые значения.";
this->lblOper->Text = L"Вычитание";
}
}
};
}
