C++

[강의] 9월 12일 수업정리

k-codestudy 2024. 9. 12. 18:05

문제 1. 크기가 가로 4, 세로 5인 2차원 배열을 다음과 같이 채우고 출력하는 프로그램 

 

< 출력 예시 >

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

 

#include <iostream>

int main()
{
	const int nSize1 = 5;
	const int nSize2 = 4;

	int arData[nSize1][nSize2]{};

	int nData{};
	int nCount{};
	int nRemainder{};

	nData = 1;

	for (int i = 0; i < nSize1; i++)
	{
		nCount++;
		nRemainder = nCount % 2;

		if (nRemainder != 0)
		{
			for (int j = 0; j < nSize2; j++)
			{
				arData[i][j] = nData;
				nData++;
			}
		}
		else
		{
			for (int j = nSize2 - 1; j >= 0; j--)
			{
				arData[i][j] = nData;
				nData++;
			}
		}
	}

	for (int i = 0; i < nSize1; i++)
	{
		for (int j = 0; j < nSize2; j++)
		{
			printf("%2d", arData[i][j]);
		}
		printf("\n");
	}
}

변수 설명

  • nSize1 및 nSize2: 배열의 크기를 정의합니다. nSize1은 행의 수(5), nSize2는 열의 수(4)
  • arData: 2차원 배열로, 값을 저장할 공간
  • nData: 배열에 채울 값을 관리하는 변수로, 1부터 시작하여 하나씩 증가
  • nCount: 현재 행의 순서를 나타내는 변수로, 각 행을 처리할 때마다 1씩 증가
  • nRemainder: nCount가 짝수인지 홀수인지 판단하는 변수로, nCount % 2의 결과를 저장하여 짝수(0) 또는 홀수(1)인지 결정

프로그램 설명

  1. 배열 채우기:
    for 루프를 통해 배열을 행 단위로 순회
    • nRemainder != 0인 경우(홀수 번째 행, 1, 3, ...): 왼쪽에서 오른쪽으로 값을 채운다
    • nRemainder == 0인 경우(짝수 번째 행, 2, 4, ...): 오른쪽에서 왼쪽으로 값을 채운다
    행의 번호를 나타내는 i가 0부터 시작하므로, 실제로는 "짝수"와 "홀수" 행의 순서가 번갈아 가며 배열을 채운다
  2. 배열 출력:
    2차원 배열 arData를 순회하며 각 값을 출력하고, 각 값은 공백을 두고 출력되며, 행이 끝날 때마다 줄바꿈을 합니다.



마방진 방식을 적용해 봄

 

#include <iostream>

int main()
{
	const int nSize1 = 5;
	const int nSize2 = 4;
	int arData[nSize1][nSize2]{};

	int nIndex1{};
	int nIndex2{};
	int nData{};

	nIndex1 = 0;
	nIndex2 = 0;
	nData = 1;

	for (int i = 0; i < nSize1; i++)
	{
		for (int j = 0; j < nSize2 - 1; j++)
		{
			arData[nIndex1][nIndex2] = nData;
			if (nIndex1 % 2 == 0)
			{
				nIndex2++;
				nData++;
			}
			else
			{
				nIndex2--;
				nData++;
			}
		}
		arData[nIndex1][nIndex2] = nData;
		nIndex1++;
		nData++;
	}


	for (int i = 0; i < nSize1; i++)
	{
		for (int j = 0; j < nSize2; j++)
		{
			printf("%2d", arData[i][j]);
		}
		printf("\n");
	}
}

'C++' 카테고리의 다른 글

[강의] 9월 24일 수업정리  (0) 2024.09.25
[강의] 9월 13일 수업정리  (0) 2024.09.14
[강의] 9월 11일 수업정리  (0) 2024.09.11
[강의] 9월 6일 수업정리  (0) 2024.09.07
[강의] 9월 5일 수업정리  (0) 2024.09.06