Dear All:
有同學 email 問我下列問題,為免其他同學有類似的 errors,遂將問題與回應 (前面加 "==>") 陳列如下,請各位參考。甲班同學找不到 powercam 者可看乙班的,反之亦然。
(註:上週甲班同學看女排比賽者不少,第一堂上課人不多,我的講課、程式示範似乎也受影響;請看乙班的 powercam 好了,週四講得確實好一些,不好意思。(你們會不會也有點不好意思?))
熊大
---------------------------------------------------------------------------------
我在寫BCB得時候遇到了一些問題,想要請問你一下!!
以下是我的程式碼:
int square[21][21];
void Magic(int n){
int i,j,k,l,data;
(我想要在這裡寫下
if(n%2==0)
Memo1->Lines->Add("please input an odd number")
但是他總是說這行程式有問題!!
)
==> Form1->Memo1->Lines->Add("please input an odd number") ;
==> 前面加 "Form1->",後面加 ";"
for(i=0;i<n;i++)
for(j=0;j<n;j++)square[i][j]=0;
(還有我想要請問一下如果我想要看到
square[i][j]=0;這行指令的輸出,我應該要怎麼讓他跑出來呢??)
==> PrintSquare(n);
==> // 呼叫 PrintSquare 即可印出當時 square 陣列內的值 <<這也是把印出訊息的部份寫成副程式的好處>>
==> // 但請把 void PrintSquare(int n) 的整段宣告放在 void Magic(int n) 之前。
i=0;j=(n-1)/2;
square[i][j]=1;
data=2;
while (data<=n*n){
k=(i-1<0)?n-1:i-1;
l=(j-1<0)?n-1:j-1;
if(square[k][l]>0)i=(i+1)%n;
square[i][j]=data++;
}
}
void PrintSquare(int n){
int i,j;
AnsiString out(其實有點不太懂這個"AnsiString"是要幹什麼用的);
==> 宣告 "out" 成為一段字串 ;與 C++ 中的 string 類似,AnsiString 可讓兩字串用 "+" 相連在一起。
for(i=0;i<n;i++)
for(j=0;j<n;j++){
out+=IntToStr(square[i][j]);
Memo1->Lines->Add(square[i][j]);
(這裡和BUTTON都不能輸出我的結果,我實在有點不知道我要怎樣進行下一步)
==> Form1->Memo1->Lines->Add(square[i][j]);
==> 前面加 "Form1->" (因為 Memo1 出現在 Form1 中,是 Form1 的物件。
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n=Edit1->Text.ToInt();
Magic(n);
PrintSquare(n);
}
老師:我剛剛去看PowerCam得時候,我好像找不到你開始寫BCB的那段故事,這個現象是正常的嗎??
==> 可能沒錄到?? 可以看當週乙班的 powercam !!
==> 有問題再問;要寫出四種生成 magic square 的方法喔~~ 加油!
S. J.