2022-03-11-C-Chap7-문제17
흐르는 강물
흐르는 강물과 같이 역동적인 그림 출력 결과를 얻고 싶다! 다음 조건에 맞추어 결과화면과 같이 출력이 되도록 프로그램을 작성하십시오.
조건
- 입력 값은 없으며, 전체 공간(SPACE)와 최대 길이(MAX) 및 반복 횟수(CYCLE)는 상수(#define)으로 설정한다.
- 전체 공간(SPACE)은 좌측(‘=’)문자열 부분과 우측(‘@’) 사이의 공락(‘ ‘)을 포함한 전체 길이를 말한다.
- 최대 길이(MAX)는 공란 부분을 제외한 문자열(‘=’, ‘@’)의 최대 길이를 말한다.
- 즉, 좌측 문자열 길이(COUNT)를 반복 인덱스로 설정한다면, 공란은 ‘전체 공간(SPACE) - 최대 길이(MAX)’가 되고, 우측 문자열 길이는 ‘최대 길이(MAX) - 좌측 문자열 길이(COUNT)’가 된다.
- 반복 횟수(CYCLE)은 좌측 문자열 기준으로 길이(COUNT)가 최대 길이(MAX)까지 출력 후, 다시 그 길이(COUNT)가 0이 될 때, 횟수 1번으로 정한다.
입력 예
SPACE 35 MAX 10 CYCLE 5
출력 예
...
======= @@@@@@@@@@@
======== @@@@@@@@@@
========= @@@@@@@@@
========== @@@@@@@@
========= @@@@@@@@@
...
Source
#include<stdio.h>
//좌측('=') 문자열 부분과 우측('@') 사이의 공란을 포함한 전체 길이
#define SPACE 50
// 공란 부분을 제외한 문자열('=', '@')의 최대 길이
#define MAX 25
//반복 횟수
#define CYCLE 2
int main(void) {
int a, b, c, roop = CYCLE;
int l_count = 0, r_count = MAX - l_count;
while (roop) {
while (l_count != MAX) {
for (a = 0; a < l_count; a++)
printf("*");
for (b = SPACE - MAX; b >= 0; b--)
printf(" ");
for (c = 0; c < SPACE - MAX - l_count; c++)
printf("@");
printf("\n");
l_count++;
}
while (l_count != 0) {
for (a = 0; a < l_count; a++)
printf("*");
for (b = SPACE - MAX; b >= 0; b--)
printf(" ");
for (c = 0; c < SPACE - MAX - l_count; c++)
printf("@");
printf("\n");
l_count--;
}
roop--;
}
return 0;
}