C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 활용 예제 : 나비 모양 출력
글번호: 342
작성자: 레드플러스
작성일: 2012/11/14 오전 5:01:14
조회수: 10780
파일: C언어_나비모양_별표출력.png (14 KB) / 전송수: 2882
C언어_나비모양_별표출력.png

#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;
}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 5. 함수 C_함수_정의_호출.png(67 KB) 레드플러스 2005-07-26 5804
  4. 제어문(조건문과 반복문) - 레드플러스 2005-07-26 5657
  4.1. 조건문 - 레드플러스 2005-07-29 4503
  4.1.1. 예제. if문 사용 예제 : 조건문1.c - 레드플러스 2005-08-02 6574
  4.1.2. 예제. switch문 : 조건문2.c - 레드플러스 2005-08-05 4750
  if문 강의 by 빌게이츠 - 레드플러스 2013-12-12 4241
  if문 순서도 순서도-If문.png(10 KB) 레드플러스 2014-02-14 4995
  if~else문 순서도 순서도-Else문.png(11 KB) 레드플러스 2014-02-14 4914
  다중 if문: if~else if~else문 순서도 순서도-ElseIf문(1).png(13 KB) 레드플러스 2014-02-14 9862
  4.2. 반복문 - 레드플러스 2005-07-29 4445
  4.2.1. 예제 : while문 : 반복문1.c - 레드플러스 2005-08-02 5250
  4.2.2. 예제. for문 : 반복문2.c - 레드플러스 2005-08-05 4946
  for문 순서도 순서도-For문.png(17 KB) 레드플러스 2014-02-14 8035
  4.2.3. 예제. do문 : 반복문3.c - 레드플러스 2005-08-05 4896
  4.3. 기타 - 레드플러스 2005-07-29 4253
  4.3.1. 예제. 제어문 : goto문 - 레드플러스 2005-10-24 5806
  C 언어로 1부터 입력 받은 숫자까지 3의 배수만 출력하기 - 레드플러스 2021-09-24 1878
  4.4. 예제 : 짝수의 합을 구하는 프로그램 : 짝수의합.c - 레드플러스 2005-08-02 5323
  구구단 출력 프로그램 : 가로로 출력 구구단_가로출력_C언어.png(26 KB) 레드플러스 2012-09-18 22182
  for문 연습용 예제 : 삼각형 작성하기 삼각형출력_기본형_4가지(1).png(8 KB) 레드플러스 2012-11-14 10457
  C언어 삼각형 작성하기(기본형) : 삼각형출력1.c 삼각형출력_기본형_삼각형출력1(1).png(14 KB) 레드플러스 2012-11-14 5952
  C언어 삼각형 작성하기(기본형) : 삼각형출력2.c 삼각형출력_기본형_삼각형출력2.png(20 KB) 레드플러스 2012-11-14 7585
  C언어 삼각형 작성하기(기본형) : 삼각형출력3.c 삼각형출력_기본형_삼각형출력3.png(13 KB) 레드플러스 2012-11-14 6312
  C언어 삼각형 작성하기(기본형) : 삼각형출력4.c 삼각형출력_기본형_삼각형출력4.png(15 KB) 레드플러스 2012-11-14 5314
현재글 활용 예제 : 나비 모양 출력 C언어_나비모양_별표출력.png(14 KB) 레드플러스 2012-11-14 10780
다음글 3. 식과 연산자 - 레드플러스 2005-07-26 5255
 
손님 사용자 Anonymous (손님)
로그인 Home