본문 바로가기
PROGRAMMING CODE/C

[SOLUTION] 흐르는 물

by daye_ 2021. 10. 18.

[문제] 흐르는 강물과 같이 역동적인 그림 출력 결과를 얻고 싶다! 다음 조건에 맞추어 결과화면과 같이 출력이 되도록 프로그램을 작성하십시오.

[조건]

- 입력 값은 없고, 전체 공간(SPACE)와 최대 길이(MAX) 및 반복 횟수(CYCLE)는 상수(#define)으로 설정한다.

- 전체공간(SPACE)은 좌측('=') 문자열 부분과 우측('@')사이의 공란(' ')을 포함한 전체 길이를 말한다.

- 최대 길이(MAX)는 공란부분을 제외한 문자열('=','@')의 최대 길이를 말한다.

- 즉, 좌측 문자열 길이(COUNT)를 반복 인덱스로 설정한다면, 공란은 '전체공간(SPACE) - 최대길이(MAX)'가 되고, 우측 문자열 길이는

'최대길이(MAX) - 좌측 문자열 길이(COUNT)'가 된다.

- 반복 횟수(CYCLE)은 좌측 문자열 기준으로 길이(COUNT)가 최대 길이(MAX)까지 출력 후, 다시 그 길이(COUNT)가 0이 될 때, 횟수 1번으로 정한다.

#include <stdio.h>
#define SPACE 50
#define MAX 25
#define CYCLE 10

int main()
{
   int count = 0, count2 =0; //왼쪽 몇개인지
   for (int i = 0; i < CYCLE; i++) { //사이클 반복
      for (int j = SPACE - MAX; j > 0; j--) { //윗쪽
         for (count = 0; count <= (SPACE - MAX) - j; count++) {
            printf("=");
         }
         for (int a = 0; a < SPACE - MAX-1; a++) { printf(" "); } //공백출력
         for (int b = SPACE - MAX - count-1; b >= 0; b--) {
            printf("@");
         }
         printf("\n");
      }
      for (int d = 1; d < SPACE-MAX+1; d++) { //아래쪽
         for (count2 = 0; count2 < SPACE - MAX - d; count2++) {
            printf("=");
         }
         for (int e = 0; e< SPACE - MAX-1; e++) { printf(" "); } //공백출력
         for (int f = SPACE - MAX - count2; f> 0; f--) {
            printf("@");
         }
         printf("\n");
      }
   }
   return 0;
}