C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[70961] Re:계산기 문제점 한가지 질문
[] 2723 읽음    2014-02-26 10:57
유후 님이 쓰신 글 :
: 계산기 만들다 문제가 있는데
: 예를들면 1+1+1+1은 =4가 나와야 하는데 2가 나옴니다.
: 첫번째로 받은 수와 두번쨰 a,b만 받는다는 소린데
: 두번째 + 버튼을 누르는 순간 입력받은 두수를 a로 만들어서 연산을 이어가게 만들고싶은데
: 소스좀 부탁드려요.
:
:
:
:
: //--------------------------------------------------------------------------------
: #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 = result-> Text+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;
: 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;                              // 1-1) 제한들 두고 배열로 잡아서 해도 될것이구?
:     // 1-2) 제한을 두지 않으려면 .. 계속 늘어날수 있는 데이타 구조체가 필요할 것입니다.
:     // 1-3) 아니면 xp 윈두우 계산기 처럼  세번째 입력시작할때  첫번째와 두번째 결과를 첫번째 변수에 저장해 두는방식도 있구요
:     // 1-4) 또는 변수를 입력할때마다 저장하지 말고..
:            // 입력을 string으로 받고 ( "50+9+23=" )  문자열을 파싱해서 처리하는 방법도 있습니다.
:
:
:     case '-':t= FloatToStr(a-b);
:     break;
:
:     case '*':t= FloatToStr(a*b);
:     break;
:
:     case '/': if(b!=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;
: }
:
: //---------------------------------------------------------------------------
:

+ -

관련 글 리스트
70960 계산기 문제점 한가지 질문 (도움받기 정말 힘드네..) 유후 2578 2014/02/26
70961     Re:계산기 문제점 한가지 질문 2723 2014/02/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.