2011-05-11 45 views
0

說我有一個像int[] x = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}一維數組。
我想它看起來像它CONVER到2D:如何將一維數組轉換爲2D列主要

1 5 9 13 
2 6 10 14 
3 7 11 15 
4 8 12 16 

目前,我有

for (int i = 0; i < 4; i++) 
{ 
    for (int j = 0; j < Nb; j++) 
     s[i][j] = x[i + j]; 
} 

但是,這並不工作。我將如何做到這一點?

+0

即二維數組看起來非常隨機... – Neal 2011-05-11 18:47:56

回答

1

嘗試

for (int i = 0, k=0; i < 4; i++) 
    for (int j = 0; j < Nb; j++) 
    s[j][i] = x[k++]; // you may want s[i][j] 
+0

謝謝你的工作另外,爲什麼我要s [i] [j],那不會工作。 – Raptrex 2011-05-11 18:55:58

+0

這取決於您是考慮首先查看行還是列。你的例子有'[i] [j]'這可能是有效的,這取決於你如何看待它。 – 2011-05-11 19:02:08

+0

循環中的Nb是什麼? – 2014-05-21 01:45:25

0

不知道什麼Nb是,但你遙遠閱讀初始陣列。嘗試這樣的:

for (int i = 0; i < 4; i++) 
    for (int j = 0; j < 4; j++) 
     s[j][i] = x[i*4 + j]; 
1

我認爲流浪7是一個錯字?

因爲我們想內環向下移動,並且外向右移動,你可以這樣做:

for i in (0..width) 
    for j in (0..height) 
     s[j][i] = x[i*height+j] 

跟蹤了這一點說明了爲什麼它的工作原理:

s[0][0] = x[0*4+0] = x[0] 
s[1][0] = x[0*4+1] = x[1] 
... 
s[0][1] = x[1*4+1] = x[5] 
相關問題