Home > Study > C Language > C Example > [ex74] 다른 모양의 이차원 배열 Transpose

[ex74] 다른 모양의 이차원 배열 Transpose
Study Language

문제 설명


3x4 배열 a 의 값들을 b 배열(4x3)에 옮겨 저장하라

#include <stdio.h>

int a[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
int b[4][3];

void transpose2(void)
{
	// 코드 구현
}

void main(void)
{
	int i, j;

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}

	transpose2();

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
}

출력 예시


1 2 3 4
5 6 7 8
9 10 11 12
12 8 4
11 7 3
10 6 2
9 5 1

정답 코드


#include <stdio.h>

int a[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
int b[4][3];

void transpose2(void)
{
	// 코드 구현
	int i, j;

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			b[4 - 1 - j][3 - 1 - i] = a[i][j];
		}
	}
}

void main(void)
{
	int i, j;

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}

	transpose2();

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
}

메모


printf 내부의 \n 습관화 필요