-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCharacterTriangle1.cpp
92 lines (85 loc) · 2.64 KB
/
CharacterTriangle1.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "CharacterTriangle1.h"
/// <summary>
/// 문제
/// 삼각형의 높이 N을 입력받아서 아래와 같이 문자 'A'부터 차례대로 왼쪽 대각선으로 채워서 삼각형 모양을 출력하는
/// 프로그램을 작성하시오.
///
/// < 처리조건 >
/// (1) 오른쪽 위부터 왼쪽 아래쪽으로 이동하면서 문자 'A'부터 차례대로 채워나간다.
/// (2) N번 행까지 채워지면 다시 오른쪽 둘째 행부터 왼쪽 아래로 채워나간다.
/// (3) 삼각형이 모두 채워질 때까지 반복하면서 채워 나간다. (문자 'Z'다음에는 'A'부터 다시 시작한다.)
///
/// 입력 형식
/// 삼각형의 높이 N(N의 범위는 100 이하의 양의 정수)을 입력받는다.
///
/// 출력 형식
/// 주어진 형태대로 높이가 N인 문자삼각형을 출력한다. 문자 사이는 한 개의 공백으로 구분한다.
///
/// 입력 예
/// 5
///
/// 출력 예
/// A
/// B F
/// C G J
/// D H K M
/// E I L N O
///
/// Hint!
/// <생각하기>
/// 배열에 채우는 순서를 먼저 생각해보자.
/// (1, 5) (2, 4) (3, 3) (4, 2) (5, 1) (2, 5) (3, 4) (4, 3) (5, 2) (3, 5) (4, 4) (5, 3) (4, 5) (5, 4) (5, 5)
/// i를 어떻게 정하는게 좋을지 여러 가지 방법이 있으므로 각자 생각해 보자.
///
/// 아래의 소스는 i를 시작하는 행의 위치로 정하고 작성한 것이다.
/// 배열은 널값(‘\0’, 0)으로 초기화 하고 출력할 때 널값인 경우 공백을 출력하면 된다.
///
/// <코드>
/// for (i = 1; i <= n; i++) {
/// for (j = i, k = n; j <= n; j++, k--) {
/// arr[j][k] = alpha++;
/// if (alpha > 'Z')
/// alpha = 'A';
/// }
/// }
///
/// <코드분석>
/// 01 : i는 처음 시작하는 행의 위치를 나타낸다.
/// 02; j는 행의 위치로 i부터 n까지 증가한다.k는 열의 위치로 n부터 1씩 감소한다.for문에서 초기값과 증감에 여러개의 연산을 처리하려면 위와 같이 ','로 구분하여 작성하면 된다.
/// 04 : 알파벳이 'Z'보다 커지면 'A'로 바꾸어 준다.
///
/// http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2074&sca=20
/// </summary>
void CharacterTriangle1::Code()
{
int n;
std::cin >> n;
char arr[101][101]{};
for (int i = 0; i < 101; i++)
{
for (int j = 0; j < 101; j++)
{
arr[i][j] = ' ';
}
}
char ch{ 'A' };
for (int i = 0; i < n; i++)
{
for (int j = i, k = n - 1; j < n; j++, k--)
{
arr[j][k] = ch++;
if (ch > 'Z')
{
ch = 'A';
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
std::cout << arr[i][j] << ' ';
}
std::cout << '\n';
}
}