|
안녕하세요. heredity입니다.
질문하신 내용을 보고 몇 자 적습니다.(질문한 내용과는 동떨어진 답변일 수 있겠군요 ^^)
1. 우선
void __fastcall TForm1::Button1Click(TObject *Sender)
{
struct P{
...
부분이 이상하게 잘려 나갔습니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
}
struct P{
...
로 바꾼후 저장하기를 눌러 C++ Builder가 이 부분을 자동 삭제하도록 하십시오.
(자동으로 지워지지 않으면 Header File에 정의된 Mathod를 포함해서 수동으로 지워야 함)
2. 선언 안된 변수가 많이 있습니다.
C/C++의 변수는 사용전 반드시 사용되는 변수를 선언(지정)해 줘야 합니다
i, n, temp, u1, ... 무척이나 많군요.
특히 temp는 배열(포인터)로써 그 크기가 적절해야 하는데, 이에 대한 정보가 없군요.
이런 경우 컴파일이 된다해도 런타임 오류가 발생될 확률이 높습니다.
3. for문에서 카운터로 사용되는 변수 j가 내포된 for 루프에 또다시
카운터로 사용되고 있습니다. 이 경우 컴파일 및 실행엔 문제가 없으나
같은 변수를 참조하는 경우 개발자가 변수를 잘못 참조하는 오류를 범하기 쉬우므로
이런 스타일의 코딩은 삼게하는게 좋겠습니다(아래 예 참조).
예>
AnsiString asStr;
for( int nI = 0; nI < 3; nI++ ) {
asStr = AnsiString( nI ) + ", ";
for( int nI = 0; nI < 10; nI++ ) { // int를 빼면 원치 않는 결과가 나오겠죠
asStr += AnsiString( nI ) + ", ";
}
asStr += nI;
ShowMessage( asStr );
}
등 손봐야 할 곳이 조금 많아 보입니다. ㅋㅋㅋ
행복하세요.
mitchu 님이 쓰신 글 :
: 안녕하세요 다른게 아니라 스트럭처 구조에 루프문을 넣을 수 있는 것에 대해 물어보려 합니다.
:
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: struct P{
: double x1; double y1;
: double x2; double y2;
: double x3; double y3;
: double x4; double y4;
: int i; int n; int u;
: };
:
: void cal(P[],int);
: void print(P[],int);
:
: void cal(P[], int cnt)
: {
: i=0;
: n=3;
: for (int j=0;j<=n; j++)
: temp[j]=0.0;
: temp[n-i]= 1.0;
: u1= 1.0-u;
: for (int k=1; k<=n; k++)
: for (j=n; j>=k; j--)
: temp[j]=u1*temp[j]+u*temp[j-1];
: B= temp[n];
:
: B[0]=1.0;
: u1 = 1.0-u;
: for (j=1; j<=n; j++)
: {
: saved = 0.0;
: for (k=0; k<j; k++)
: {
: temp = B[k];
: B[k] = saved+u1*temp;
: saved= u*temp;
: }
: B[j] = saved;
: C= 0.0;
: for (k=0; k<=n; k++) P[i]= C + B[k]*x1;
:
: }
: //---------------------------------------------------------------------------
: 아래와 같은 식으로 조합하려 하는 데 뭔가 연결고리가 빠진것 같네요 ...정의가 안된다는 에러가 나오던데
: 어떻게 해결하는 것이 올바른 방식인 지
: 고수님들 조언좀 부탁드리겠습니다.
: 더운 여름인데 수고하세요..
|