흐르는 강물

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

조건

  • 입력 값은 없으며, 전체 공간(SPACE)와 최대 길이(MAX) 및 반복 횟수(CYCLE)는 상수(#define)으로 설정한다.
  • 전체 공간(SPACE)은 좌측(‘=’)문자열 부분과 우측(‘@’) 사이의 공락(‘ ‘)을 포함한 전체 길이를 말한다.
  • 최대 길이(MAX)는 공란 부분을 제외한 문자열(‘=’, ‘@’)의 최대 길이를 말한다.
  • 즉, 좌측 문자열 길이(COUNT)를 반복 인덱스로 설정한다면, 공란은 ‘전체 공간(SPACE) - 최대 길이(MAX)’가 되고, 우측 문자열 길이는 ‘최대 길이(MAX) - 좌측 문자열 길이(COUNT)’가 된다.
  • 반복 횟수(CYCLE)은 좌측 문자열 기준으로 길이(COUNT)가 최대 길이(MAX)까지 출력 후, 다시 그 길이(COUNT)가 0이 될 때, 횟수 1번으로 정한다.

입력 예

SPACE 35 MAX 10 CYCLE 5

출력 예

...
=======     @@@@@@@@@@@
========     @@@@@@@@@@
=========     @@@@@@@@@
==========     @@@@@@@@
=========     @@@@@@@@@
...

image

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;
}

태그:

카테고리:

업데이트: