2016-11-24 60 views
1

2次元配列に乱数が入っています。例えば2次元配列の移動要素

:対角線を変更する方法

#define d 4 

int main(void) 
{ 
int a[d][d]; 
int primary[d], secondary[d]; 
size_t i, j; 

srand(time(NULL)); /* fill array with random numbers */ 
for (i = 0; i < d; i++) 
    {for (j = 0; j < d; j++) 
    a[i][j] = rand() % 100; 
    } 

。たとえば:

1 0 0 0 2  2 0 0 0 1 
0 3 0 4 0  0 4 0 3 0 
0 0 5 0 0 to 0 0 5 0 0 
0 6 0 7 0  0 7 0 6 0 
8 0 0 0 9  9 0 0 0 8 

タスクは、その後のサイクルを使用して対角線配置を変更し、i`mサイクルは次のようになりますどのように得ていないagain.Howeverそれを印刷Dサイズのランダム行列を印刷することです。

ヒントや例があれば教えてください。

+1

はなく、逆ループや印刷の代わりに、ランダムな値とセットにそれを上にして、あなたが行列を埋めるために使用したのと同じロジックを使用してください。 – dreamcrash

+0

「サイクルの使用」とはどういう意味ですか? – davmac

答えて

1

ループその後、j < d/2と、値入れ替えるながら:

for (i = 0; i < d; i++) { 
    for (j = 0; j < d/2; j++) { 
     int temp = a[i][j]; 
     a[i][j] = a[i][d - j -1]; 
     a[i][d - j -1] = temp; 
    } 
} 
+0

d/2は何をしているのですか?そしてうん、うまく働いた。 – andrewand

+0

dを2で割って:)、紙と鉛筆でそれを行いますが、中央と左とのオフセットを与えるまでスワップする必要があります。 –