//---------------------------------------------------------------------------
// Проект 3. Калькулятор на четыре действия
// Сложение, вычитание, умножение, деление с защитой от деления на ноль.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------

// Одно поле результата, четыре кнопки. Деление на ноль — типичная ошибка
// новичка, поэтому проверяем знаменатель явно.
double gA, gB;
bool grab(TEdit *ea, TEdit *eb)
{
    try { gA = StrToFloat(ea->Text); gB = StrToFloat(eb->Text); return true; }
    catch (...) { return false; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonAddClick(TObject *Sender)
{
    if (!grab(EditA, EditB)) { EditR->Text = "ошибка ввода"; return; }
    EditR->Text = FormatFloat("0.######", gA + gB);
}
void __fastcall TForm1::ButtonSubClick(TObject *Sender)
{
    if (!grab(EditA, EditB)) { EditR->Text = "ошибка ввода"; return; }
    EditR->Text = FormatFloat("0.######", gA - gB);
}
void __fastcall TForm1::ButtonMulClick(TObject *Sender)
{
    if (!grab(EditA, EditB)) { EditR->Text = "ошибка ввода"; return; }
    EditR->Text = FormatFloat("0.######", gA * gB);
}
void __fastcall TForm1::ButtonDivClick(TObject *Sender)
{
    if (!grab(EditA, EditB)) { EditR->Text = "ошибка ввода"; return; }
    if (gB == 0) { EditR->Text = "деление на ноль"; return; }
    EditR->Text = FormatFloat("0.######", gA / gB);
}
//---------------------------------------------------------------------------
