공부 중 메모/수업 예제 (KGCA)

C언어 제어문 예제 (다이아 그리기)

라이피 (Lypi) 2018. 6. 23. 00:25
반응형

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일.

#include <stdio.h>

void DrawChar(char cValue);
void DrawStar(int iMaxRow, int iMaxColumn, int iStartColumn, int iDir);
void DrawDiamond(int iNunRow, int iNumCol);

int main()
{
	int iNumColumn = 3;				//행(가로줄,위에서 아래로 셈) = Column
	int iNumRow = iNumColumn;		//열(세로줄,좌에서 우로 셈 ) = Row

	//1)직접 제어문을 사용하여 출력
	for (int row = 0; row < iNumRow; row++) {				

		for (int col = 0; col < iNumColumn - row; col++) {
			printf(" ");
		}

		for (int k = 0; k < 2 * row + 1; k++) {
			printf("*");
		}
		printf("\n");
	}

	for (int row = 0; row < iNumRow; row++) {

		for (int col = 0; col < row; col++) {
			printf(" ");
		}

		for (int k = 0; k < 2 * (iNumColumn - row +1) +1; k++) {
			printf("*");
		}
		printf("\n");
	}

	printf("\n\n");


	//2) 함수를 사용하여 출력
	DrawDiamond(iNumRow, iNumColumn);
}

void DrawChar(char cValue)
{
	fprintf(stdout, "%c", cValue);
}

void DrawStar(int iMaxRow, int iMaxColumn, int iStartColumn, int iDir)
{
	for (int iRow = 0; iRow < iMaxRow; iRow++) {

		int iNumCol = iMaxColumn - (iRow * iDir);
		for (int iCol = 0; iCol < iNumCol; iCol++) {
			DrawChar(' ');
		}

		iNumCol = (iStartColumn - (iRow * -iDir)) * 2 + 1;
		for (int iCol = 0; iCol < iNumCol; iCol++) {
			DrawChar('=');
		}
		printf("\n");
	}
}

void DrawDiamond(int iNumRow, int iNumCol)
{
	//iDir=1 아래로 갯수 증가, iDir = -1 아래로 갯수 감소
	DrawStar(iNumRow,	 iNumCol,  0,		1);
	DrawStar(iNumRow +1, 0		, iNumCol,  -1);
}



이건 수업 중 과제

#include <stdio.h>

int main()
{
	int iMax;
	printf("줄 수를 입력하세요 : "); scanf_s("%d", &iMax);

	for (int i = 0; i < iMax; i++) {
		int k = 0;
		for (k = 0; k < iMax-i; k++) {
			printf(" ");
		}
		for (; k < iMax+ i + 1; k++) {
			if(i%2 == 1) {
				if(k%2 == 1) {
					printf("*");
				}
				else {
					printf(" ");
				}
			}
			else {
				if (k % 2 == 1) {
					printf(" ");
				}
				else {
					printf("*");
				}
			}
			
		}
		for (; k < i; i++) {
			printf(" ");
		}
		printf("\n");
	}

	for (int i = iMax; i >= 0; i--) {
		int k = 0;
		for (k = 0; k < iMax-i; k++) {
			printf(" ");

		}
		for (; k < iMax+i+1; k++) {
			if (i % 2 == 1) {
				if (k % 2 == 1) {
					printf("*");
				}
				else {
					printf(" ");
				}
			}
			else {
				if (k % 2 == 1) {
					printf(" ");
				}
				else {
					printf("*");
				}
			}
		}
		for (; k < i; i++) {
			printf(" ");
		}
		printf("\n");
	}
}


반응형