全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1836
推到 Plurk!
推到 Facebook!

產生亂數表

尚未結案
阿文
一般會員


發表:10
回覆:15
積分:5
註冊:2004-10-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-02 17:48:59 IP:59.113.xxx.xxx 未訂閱
各位大家好! 我想利用StringGrid產生一個亂數表(5個數為一組,共產生500組) 但一直有Error 還請各位大大協助,新手上路還請包涵~ 程式部分如下:  AnsiString ListNum="0123456789";    int x,y,k;    AnsiString ListWord="";      for(y=1;y<=5;y++)      {        for(x=1;x<=11;x++)        {          randomize();          for(int k=0;k<5 ;k ) { ListWord=ListNum[random(10)]; StringGrid->Cells[x][y]=StringGrid->Cells[x][y] ListWord; } ListWord=""; }
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-02 18:16:22 IP:59.115.xxx.xxx 未訂閱
阿文 您好:    請注意程式碼的縮排整理並參考下列連結頁面內的說明,然後透過 "修改文章" 的功能重新張貼您的程式碼,以便於瀏覽: 【公告】程式碼張貼規則與方法 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=57538 【公告】重申版規與作業問題說明 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58991 7 天天敲鍵盤 v 時時按滑鼠 8
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-03 09:31:13 IP:202.181.xxx.xxx 未訂閱
What's your error message??
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-03 10:02:19 IP:210.202.xxx.xxx 未訂閱
for your reference...
int x,y;
randomize();
for(y=1;y<=100;y  )
{
   for(x=1;x<=5;x  )
   {
     StringGrid1->Cells[x][y] = random(10);
   }
}
StringGrid1,properties->ColCount = 6; properties->RowCount = 101
阿文
一般會員


發表:10
回覆:15
積分:5
註冊:2004-10-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-10 16:50:51 IP:59.113.xxx.xxx 未訂閱
感謝版主與各位大大的指教 將程式碼錯誤訊息重新上傳 在此附註說明,上次的發言可能沒有說的很清楚, 我希望我纏生的亂數表能夠能分成10列來顯示在StringGrid 再次感謝版主及各位大大的指教
AnsiString ListNum="0123456789";
int x,y,k;
AnsiString ListWord="";
for(y=1;y<=5;y++)
{
for(x=1;x<=11;x++)
{
randomize();
for(int k=0;k<5 ;k++)
{
ListWord=ListNum[random(10)];    StringGrid->Cells[x][y]=StringGrid->Cells[x][y]+ListWord;
}
ListWord="";
}
錯誤訊息如下: ThrowIfOutOfRange(idx); // Should Range-checking be optional to avoid overhead ??
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-10 21:40:38 IP:61.230.xxx.xxx 未訂閱
阿文 您好:    您的寫法有點怪怪的,我將您的程式碼做好縮排整理後是下列這個樣子:
AnsiString ListNum="0123456789";
int x,y,k;
AnsiString ListWord="";
for(y=1;y<=5;y  )
{
    for(x=1;x<=11;x  )
    {
        randomize();
        for(int k=0;k<5 ;k  )
        {
            ListWord=ListNum[random(10)];                StringGrid->Cells[x][y]=StringGrid->Cells[x][y] ListWord;
        }
        ListWord="";
    }
注意到了嗎?您的大括弧不對稱 (少了一個),而且不但 int k 宣告了兩次,就連 randomize() 都放到迴圈裡邊了,該函式是作亂數的初始化,初始化動作無需每次取值時都做一次,另外還有一點,應該就是導致您程式發生錯誤的地方,您如果要使用陣列取值的方式來處理 AnsiString 的話,就得注意要由 1 開始取值,因此您應該要將取得的亂數值 (0~9) 加上 1,否則 random() 產生的值為 0 時,就會產生錯誤了。 我按照您的架構將程式做了修改並予簡化如下,您參考看看吧:
int x, y, k;    randomize();    for (y=1; y<=5; y  )
{
    for (x=1; x<=11; x  )
    {
        for(k=0; k<5; k  )
        {
            StringGrid1->Cells[x][y] = StringGrid1->Cells[x][y]   IntToStr(random(10));
        }
    }
}
7 天天敲鍵盤 v 時時按滑鼠 8
阿文
一般會員


發表:10
回覆:15
積分:5
註冊:2004-10-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-11 07:47:52 IP:218.175.xxx.xxx 未訂閱
感謝版主RedSnow的指導 對於AnsiString及Random()的用法,問題已經解決了 謝謝你這樣細心的指導,版主辛苦了!!
系統時間:2024-05-03 22:13:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!