|
갓 입문한 초보입니다. 빌더 6로 계산기를 만들던중
에러에 관한 질문입니다
1) 50 -> + -> 9 -> + -> 9 -> = -> 18 (?)
2) 8 -> + -> 9 -> + -> 9 -> = 16 (?)
3) 1 -> + -> + 에러 발생
4) 아무것도 입력안하고 +누를 경우 에러 발생
5) 에디트에 사용자가 임의로 값을 입력할 수 없도록 처리(사용자가 영어를 입력할 수 있음)
6) 88,88 -> = 에러 발생
<위 모든 항목은 (+, -, *, /) 모두 같은 이상 발생>
7) 3 -> - -> 3 -> = -> = -> = -> = ... 계속 = 만 눌렀는데 값이 0, 3을 반복하면서 표현됨
8) 0으로 나누었을때 에러 (해결)
9) 8을 10개 쓰고 + 1할 경우 이상한 값 출력
10) On상태에서 값을 입력하고 다시 On버튼을 눌럿을때 클리어됨
11) 현재 On상태인지 Off상태인지 알수가 없음... (버튼에 색상을 넣어서 해결해보기)
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tcalculator1 *calculator1;
//---------------------------------------------------------------------------
__fastcall Tcalculator1::Tcalculator1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::oneClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text; //ansistring 문자형들
result->Text = str + "1";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::twoClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "2";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::threeClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "3";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::fourClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "4";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::fiveClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "5";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::sixClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "6";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::sevenClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "7";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::eightClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "8";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::nineClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "9";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::zeroClick(TObject *Sender)
{
if(!on) return;
AnsiString str = result->Text;
result->Text = str + "0";
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::clearClick(TObject *Sender)
{
if(!on) return;
result->Clear();
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::divid1Click(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '/';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::plus1Click(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '+';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::clear1Click(TObject *Sender)
{
if(!on) return;
result->Clear();
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::minus1Click(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '-';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::mutifly1Click(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '*';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::close1Click(TObject *Sender)
{
if(!on) return;
calculator1->Close();
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::plusClick(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '+';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::minusClick(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '-';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::multiflyClick(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '*';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::dividClick(TObject *Sender)
{
if(!on) return;
a = StrToFloat (result->Text);
d = '/';
result->Text = "";
comma = false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::commaBTNClick(TObject *Sender)
{
if(!on) return;
if(!comma)
{
AnsiString str = result->Text;
str +=',';
result->Text = str;
comma = true;
}
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::equalClick(TObject *Sender)
{
if(!on) return;
if(d == ' ') return;
b = StrToFloat (result->Text);
AnsiString t=0;
switch(d)
{
case '+':t= FloatToStr(a+b);
break;
case '-':t= FloatToStr(a-b);
break;
case '*':t= FloatToStr(a*b);
break;
case '/': if(a==0) t= FloatToStr(a/b);
else t = ("can't be divided by zero..");
break;
}
result->Text= t;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::onBTNClick(TObject *Sender)
{
result->Text = "";
d = ' ';
comma=false;
on=true;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::offClick(TObject *Sender)
{
result->Text = "";
d= ' ';
comma=false;
on=false;
}
//---------------------------------------------------------------------------
void __fastcall Tcalculator1::result1Click(TObject *Sender)
{
if(!on) return;
if(d == ' ') return;
b = StrToFloat (result->Text);
AnsiString t=0;
switch(d)
{
case '+':t= FloatToStr(a+b);
break;
case '-':t= FloatToStr(a-b); break;
case '*':t= FloatToStr(a*b); break;
case '/': if(a==0) t= FloatToStr(a/b);
else t = ("can't be divided by zero..");
break;
}
result->Text= t;
}
|