전 세계적으로 기념되는 여성의 날을 맞아, C++ 프로그래밍 언어로 축하 도형과 메시지를 출력하는 프로그램을 만들어 보았습니다. 이 코드는 콘솔 화면에 '#' 문자로 이루어진 원 안에 '7 Oct'와 'Happy Women's Day'라는 문구를 함께 출력해, 텍스트 기반의 특별한 축하 카드를 완성합니다.
코드 예제
아래 코드는 두 부분으로 구성되어 있습니다. 첫 번째 루프는 원 형태의 상단 디자인을 출력하고, 두 번째 루프는 세로 줄과 가로 줄로 이루어진 하단 패턴을 그려냅니다.
#include <iostream>
using namespace std;
int main(){
// 디자인의 크기 초기화
int n = 5;
// 원(디자인의 윗부분)을
// 출력하기 위한 루프
// 디자인의 높이를 제어하는 바깥쪽 루프
for (int i = 0; i <= 2 * n; i++) {
// 너비를 제어하는 안쪽 루프
if (i == n)
cout << " "<< "7 Oct";
for (int j = 0; j <= 2 * n; j++) {
// 각 점과 중심 사이의 거리 계산
float center_dist = sqrt((i - n) * (i - n) + (j - n) * (j - n));
if (center_dist > n - 0.5 && center_dist < n + 0.5)
cout << "#";
else
cout << " ";
}
// HappY Women's DaY 출력
if (i == n)
cout << " "<< "Happy Women's Day";
cout << endl;
}
// 아랫부분을 출력하기 위한 루프
// 높이를 제어하는 바깥쪽 루프
for (int i = 0; i <= n; i++) {
// 패턴 위치 조정
// 가로줄을 출력하기 위한 루프
if (i == (n / 2) + 1) {
for (int j = 0; j <= 2 * n; j++)
if (j >= (n - n / 2) && j <= (n + n / 2))
cout << "*";
else
cout << " ";
}
else {
for (int j = 0; j <= 2 * n; j++) {
if (j == n)
cout << "*";
else
cout << " ";
}
}
cout << endl;
}
}코드 동작 원리
원 그리기: 각 좌표 (i, j)가 중심점 (n, n)으로부터 얼마나 떨어져 있는지 피타고라스 정리를 이용해 계산합니다(center_dist). 이 거리가 반지름 n의 근처 범위에 있으면 '#'을 출력하여 원의 테두리를 자연스럽게 완성합니다.
하단 패턴: 중앙 열(j == n)에는 '*'를 출력해 세로 줄을 그리고, 중간 위치에서는 일정 범위의 좌표에만 '*'를 출력해 가로 줄을 만듭니다.
참고: sqrt() 함수를 사용하므로, 사용하는 컴파일러나 환경에 따라 #include <cmath> 헤더를 추가해야 정상적으로 컴파일될 수 있습니다.
실행 결과
위 코드를 컴파일하고 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
