如何取出陣列 |
尚未結案
|
tzeyang
一般會員 發表:4 回覆:4 積分:1 註冊:2005-03-23 發送簡訊給我 |
我要做的是更大的陣列以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 發送簡訊給我 |
參考一下這樣符不符合您的要求?? <做法一>
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 發送簡訊給我 |
您好:
換各方式思考,取出中間點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;i發表人 - supman 於 2005/04/22 00:25:32 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |