線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:826
推到 Plurk!
推到 Facebook!

如何取出陣列

尚未結案
tzeyang
一般會員


發表:4
回覆:4
積分:1
註冊:2005-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-21 22:13:51 IP:211.76.xxx.xxx 未訂閱
我要做的是更大的陣列以8*8做舉例 假設有一個8*8的陣列如下 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 但我把它變成4*4陣列,變成4個區段 0 1 2 3* 4 5 6 7 8 9 10 11* 12 13 14 15 16 17 18 19* 20 21 22 23 24 25 26 27* 28 29 30 31 ************************* 32 33 34 35* 36 37 38 39 40 41 42 43* 44 45 46 47 48 49 50 51* 52 53 54 55 56 57 58 59* 60 61 62 63 當i=0要取出區段0時 0.1.2.3.8.9.10.11.16.17.18.19.24.25.26.27 當i=1要取出區段1時 4.5.6.7.12.13.14.15.20.21.22.23.28.29.30.31 當i=8要取出區段2時 32.33.34.35.40.41.42.43.48.49.50.51.56.57.58.59 當i=9要取出區段3時 36.37.38.39.44.45.46.47.52.53.54.55.60.61.62.63 以此類推 我的做法是 for(i=0??????????) { str = ""; str = AnsiString().sprintf("X ", test[i*4]); str = AnsiString().sprintf("X ", test[i*4 1]); str = AnsiString().sprintf("X ", test[i*4 2]); str = AnsiString().sprintf("X ", test[i*4 3]); str = AnsiString().sprintf("X ", test[i*4 8]); str = AnsiString().sprintf("X ", test[i*4 8 1]); str = AnsiString().sprintf("X ", test[i*4 8 2]); str = AnsiString().sprintf("X ", test[i*4 8 3]); str = AnsiString().sprintf("X ", test[i*4 16]); str = AnsiString().sprintf("X ", test[i*4 16 1]); str = AnsiString().sprintf("X ", test[i*4 16 2]); str = AnsiString().sprintf("X ", test[i*4 16 3]); str = AnsiString().sprintf("X ", test[i*4 24]); str = AnsiString().sprintf("X ", test[i*4 24 1]); str = AnsiString().sprintf("X ", test[i*4 24 2]); str = AnsiString().sprintf("X ", test[i*4 24 3]); RichEdit2->Lines->Add(IntToStr(i) " " str); for的部份有問題 i=0.1可以做但不知0.1做完後如何讓i跳成8.9
gac
初階會員


發表:2
回覆:28
積分:26
註冊:2004-08-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-21 22:56:41 IP:61.216.xxx.xxx 未訂閱
參考一下這樣符不符合您的要求??    <做法一>    
for(i=0;i<(這裡看你最大會到多少);  i) 
{
    if(i % 8 <= 1)
    {
        //...... 這裡做你要做的事情
    }
}
---------------------------------------- <做法二>
for(i=0;i<(這裡看你最大會到多少); )  //<---- i 在迴圈裡做改變
{
    //...... 這裡做你要做的事情        if(   i % 8 == 2 )
    {
        i  = 6;        // i = 0->1->8->9->16->17->24->25->....
    }
}
---------------------- 我..........還很嫩! 發表人 - gac 於 2005/04/22 00:36:32
------
我..........還很嫩!
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-22 00:17:04 IP:203.204.xxx.xxx 未訂閱
您好: 換各方式思考,取出中間點8*8矩陣,中間點為4,這這樣不管您為幾乘幾的陣列都可以分割為四邊取值,短短幾行就可以不用寫那麼長.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
const int num[8][8]={0,1,2,3,4,5,6,7,
                     8,9,10,11,12,13,14,15,
                     16,17,18,19,20,21,22,23,
                     24,25,26,27,28,29,30,31,
                     32,33,34,35,36,37,38,39,
                     40,41,42,43,44,45,46,47,
                     48,49,50,51,52,53,54,55,
                     56,57,58,59,60,61,62,63};
int middle=8/2;
int i,j;
AnsiString S[4];
Label1->Caption="";
for (i=0;iLines->Add(S[i]);
}
發表人 - supman 於 2005/04/22 00:25:32
系統時間:2024-05-19 19:10:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!