저도 잘 모르는 데... 소스도 올리시고 해서 함 보았습니다.
그냥 제가 아는 수준에서 약간 수정해 보았습니다. 참고하세요...
Unit.h
:
:
private: // User declarations
double A,B,f; //이런 변수들은 왠만하면 Unit.h 파일 안에 private에 넣어 주세요...
int i, c;
AnsiString temp;
//---------------------------------------------------------
Unit.cpp
:
:
:
//double A=0,B=0,f=2; //이런 변수들은 왠만하면 Unit.h 파일 안에 private에 넣어 주세요...
//int i, c=0;
//AnsiString temp ;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCalculator *Calculator;
//---------------------------------------------------------------------------
__fastcall TCalculator::TCalculator(TComponent* Owner)
: TForm(Owner)
{
A = 0.0; //그리고 변수도 이렇게 하면 자신도 못 알아보니 double이면 dA, fA, iA 이런 식으로 하면 좋지요
B = 0.0; //그리고 dA 이렇게 하면 double A라는 것은 아는 데... 프로그램 한참 하다보면 A가 뭔가? 그러니 dSum, dTotal
f = 2.0; //뭐 이런씩으로 하면 프로그램이 쉬겠지요... ^^ 저도 프로그램 잘 못하는 데... 잘 하시는 것 같습니다.
i = 0; //3년 정도 하시면 저보다 훨씬 잘 할 것 같습니다. 하이팅...
c = 0; //현재 대학 교수님도 님같이 코딩하는 분이 많다는 사실 놀랍지요.
//다른 것은 그대로 두고 자승 부분만 약간 손을 보았습니다. 제가 아는 수준에서... 혹 도움이 되었으면 합니다.
temp = ""; //이런 것은 asTemp 이렇게 하면 쉽지요...
} //그리고 줄 라인 깨끗하게... 코딩하셔야... 헷갈리지 않습니다.
//void __fastcall TCalculator::selfClick(TObject *Sender) 이 부분만 참고하시고 다른 것은 하나 하나 해보세요.
//프로그램은 중독성이 있습니다. 저도 중독자입니다. ㅋㅋㅋ
//---------------------------------------------------------------------------
:
:
:
:
//double *d = new double;
//delete d 혹 이런 것이 사용하고자 하더라도 double d; 사용하세요 &d는 double *d 이것과 같으니까요? ^^
//그래도 double 를 여러개 확보할 떄는 double *d = new double[100]; 이런 식으로 하고 해제할 때는 delete []d; 하시면 됩니다.
//자승은 금방 예외가 발생하니 Debug모드에서 하지 마시고 Build하고 탐색기에서 실행하세요...
void __fastcall TCalculator::selfClick(TObject *Sender)
{
double C;
if(view->Text=="")
{
ShowMessage("Input Number!");
return;
}
//----------------------------------------------------------------------------
A=StrToFloat(view->Text);
if( iText);
view->Clear();
try
{
C = A*A;
view->Text = C;
}
catch(...)
{
view->Text = A;
}
}
}
//---------------------------------------------------------------------------
止水 님이 쓰신 글 :
: 이거 뭐 어떻게 글을 올려야 하는지가 더욱 문제군요;;;
:
: 간단한 계산기를 만들고 추가로 자승기? 를 만드는 도중
:
: 버튼 클릭 수 만큼 자승(제곱)을 시키고 싶은데.
:
: 2제곱 까지는 문제 없습니다.
:
: 단지 3제곱부터 요상한 출력이...
:
: 뭐가 잘못됐는지 모르겠네요 ㅠ
:
: .......공부좀 할라고 하면 여기저기서 태클이니...ㅋㅋㅋㅋ
:
: ......코드 올립니다.
:
: #include
: #pragma hdrstop
:
: #include "Unit1.h"
: double A=0,B=0,i=0;
: AnsiString temp ;
: //---------------------------------------------------------------------------
: void __fastcall TCalculator::selfClick(TObject *Sender)
: {
: double C, j, z;
: double *d = new double;
: if(view->Text==""){
: ShowMessage("Input Number!");
: }else if(i!=1){
: A=StrToFloat(view->Text);
: i=1;
: view->Clear();
: C=A*A;
: view->Text = C;
: }else{
: view->Clear();
: for(j=0;jText = z;
: i++;
: }
: delete d;
: }
:
:
: 다른것보다 메모리 동적할당을 해서 한번 잡고 놓는게 말이 되는 듯 해서 질러봤는데
:
: .....영 모르겠습니다.
:
: 이거 전에 했던 방법은
:
: 숫자를 바꿔서 자승시켜도 전에 계산되었던게 나와서 ㅈㅈ....
:
: 이것도 지금 보니까 말이 안되는군요 i != 1 이라면서 밑에 i++....
:
: 누가 대책좀 세워줘요!
:
: 참 첨부파일은 이 이후에 수정좀 하다가 땔친 상태입니다.
:
:
: ....이거 코드가 이상하게 올라가네요?
:
: .....첨부파일 참조 해 주시길 바랍니다...orz