3行3列の行列を右へ45度回転した行列を表示するプログラム
Posted: 2015年2月06日(金) 02:09
実行結果は
% ./a.out
回転前
1 2 3
4 5 6
7 8 9
回転後
1
4 2
7 5 3
8 6
9
%
です
プログラムは
#include <stdio.h>
#define NUMBER (3) /* 回転する行列の列と行の要素数 */
int main(void)
{
/* 回転する行列の宣言と初期化 */
int matrix[NUMBER][NUMBER]={
{1,2,3},{4,5,6},{7,8,9}
};
/* 回転した行列を代入する配列.0で初期化 */
int rotate[NUMBER+2][NUMBER+2] = {0};
int i,j; /* for文用のカウンタ変数 */
/* 行列matrixを右に45度回転させた行列rotateを作る */
for(i=0;i<NUMBER;i++)
for(j=0;j<NUMBER;j++)
rotate[(4-j)]=matrix[j];<ーーーーーーーーーーーーーーーーーーーーーーここがわからない
/* 行列rotateを印字する */
for(i=0;i<NUMBER+2;i++) {
for(j=0;j<NUMBER+2;j++) {
if(rotate[j]!=0)
printf("%3d", rotate[j]);
else
printf(" ");
}
printf("\n");
}
return 0;
}
です
矢印の部分がわかりません
教えてください
お願いします
% ./a.out
回転前
1 2 3
4 5 6
7 8 9
回転後
1
4 2
7 5 3
8 6
9
%
です
プログラムは
#include <stdio.h>
#define NUMBER (3) /* 回転する行列の列と行の要素数 */
int main(void)
{
/* 回転する行列の宣言と初期化 */
int matrix[NUMBER][NUMBER]={
{1,2,3},{4,5,6},{7,8,9}
};
/* 回転した行列を代入する配列.0で初期化 */
int rotate[NUMBER+2][NUMBER+2] = {0};
int i,j; /* for文用のカウンタ変数 */
/* 行列matrixを右に45度回転させた行列rotateを作る */
for(i=0;i<NUMBER;i++)
for(j=0;j<NUMBER;j++)
rotate[(4-j)]=matrix[j];<ーーーーーーーーーーーーーーーーーーーーーーここがわからない
/* 行列rotateを印字する */
for(i=0;i<NUMBER+2;i++) {
for(j=0;j<NUMBER+2;j++) {
if(rotate[j]!=0)
printf("%3d", rotate[j]);
else
printf(" ");
}
printf("\n");
}
return 0;
}
です
矢印の部分がわかりません
教えてください
お願いします