문제 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)인지 결정
프로그램 설명
- 배열 채우기:
for 루프를 통해 배열을 행 단위로 순회- nRemainder != 0인 경우(홀수 번째 행, 1, 3, ...): 왼쪽에서 오른쪽으로 값을 채운다
- nRemainder == 0인 경우(짝수 번째 행, 2, 4, ...): 오른쪽에서 왼쪽으로 값을 채운다
- 배열 출력:
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 |