#include <stdio.h>
// 왼쪽 날개만 출력하는 함수
void MakeButterfly1(int row)
{
int i, j = 0; // i변수는 행반복, j변수는 열반복 용도
int mid = row / 2; // 중간값(반전)
// i 변수는 무조건 행 반복(0~row)
for (i = 0; i < row; i++)
{
if (i < mid + 1) // 중간값까지는 별표를 증가
{
for (j = 0; j < i + 1; j++)
{
printf("*");
}
}
else // 중간값 이후로는 별표를 감소
{
for (j = 0; j < row - i; j++)
{
printf("*");
}
}
printf("\n"); // 줄바꿈
}
}
// 오른쪽 날개만 출력하는 함수
void MakeButterfly2(int row)
{
int i, j = 0; // i변수는 행반복, j변수는 열반복 용도
int mid = row / 2; // 중간값(반전)
// i 변수는 무조건 행 반복(0~row)
for (i = 0; i < row; i++)
{
printf(" ");
if (i < mid + 1) // 중간값까지는 별표를 증가
{
// 공백 추가(공백 감소)
for (j = 0; j < row - i; j++) // 추후 날개 합칠 때에는 row 대신 mid를 사용
{
printf(" ");
}
// 열 반복(별표 증가)
for (j = 0; j < (i + 1); j++)
{
printf("*");
}
}
else // 중간값 이후로는 별표를 감소
{
// 공백 추가(공백 증가)
for (j = 0; j < i + 1; j++)
{
printf(" ");
}
// 열 반복(별표 감소)
for (j = 0; j < row - i; j++)
{
printf("*");
}
}
printf("\n"); // 줄바꿈
}
}
// 양쪽 날개 출력 : 별표1+별표2 합치기
void MakeButterfly3(int row)
{
int i, j = 0; // i변수는 행반복, j변수는 열반복 용도
int mid = row / 2; // 중간값(반전)
// i 변수는 무조건 행 반복(0~row)
for (i = 0; i < row; i++)
{
if (i < mid + 1) // 중간값까지는 별표를 증가
{
for (j = 0; j < i + 1; j++)
{
printf("*");
}
// 공백 추가(공백 감소)
for (j = 0; j < mid - i; j++)
{
printf(" ");
}
printf(" "); // 정가운데 구분공백
// 공백 추가(공백 감소)
for (j = 0; j < mid - i; j++)
{
printf(" ");
}
// 열 반복(별표 증가)
for (j = 0; j < (i + 1); j++)
{
printf("*");
}
}
else // 중간값 이후로는 별표를 감소
{
for (j = 0; j < row - i; j++)
{
printf("*");
}
// 공백 추가(공백 증가)
for (j = 0; j < (i - mid); j++) // (행수 - 중간값)만큼 공백 추가
{
printf(" ");
}
printf(" "); // 정가운데 구분공백
// 공백 추가(공백 증가)
for (j = 0; j < (i - mid); j++)
{
printf(" ");
}
// 열 반복(별표 감소)
for (j = 0; j < row - i; j++)
{
printf("*");
}
}
printf("\n"); // 줄바꿈
}
}
// 메인 함수
int main(void)
{
int row = 0; // 행수 저장
while (1 == 1) // 무한루프
{
printf("별의 행수를 입력하세요(종료: 0) : ");
scanf("%d", &row);
if (row < 0)
{
printf("\n\n양의 정수를 입력하세요.\n\n\n");
}
else
{
if (row == 0)
{
printf("\n\n종료합니다.\n");
break; // while문 종료
}
if (row % 2 == 0)
{
printf("\n\n잘못 입력하셨습니다. 홀수로 입력하세요.\n\n\n");
}
else
{
//MakeButterfly1(row); // 왼쪽 날개 출력
//MakeButterfly2(row); // 오른쪽 날개 출력
MakeButterfly3(row); // 왼쪽 날개와 오른쪽 날개 합쳐서 출력
}
}
} // end while
return 0;
}