언어 자료구조 알고리즘/C언어 예제

[C언어 소스] 산봉우리 출력

언제나휴일 2016. 4. 3. 12:10
반응형

[C언어 소스] 산봉우리 출력




5. 반복문 연습 - 산봉우리 출력.c

알고리즘

n:←산의 높이 입력

반복(line:12n)

    조건(line<=n

        반복(space:14n-1-line)

            공백 출력

        반복(star:12line-1)

            '*' 출력

        개행

    아니면

        반복(space:12n-line))

            공백 출력

        반복(start:12(line-n))

            '*' 출력

        반복(space:12(2n-line))

            공백 출력

        반복(star:1(2n-line-1))

            '*' 출력

        반복(space:12(2n-line))

            공백 출력

        반복(start:12(line-n))

            '*' 출력

        개행

 

 

소스코드

 

//5. 반복문 연습 - 산봉우리 출력

 

//입력

//5                - n

 

//출력

//                    *                          1                        공백(9+9),1, 개행

//                   ***                         2                        공백(9+8), 3, 개행

//                  *****                        3                        공백(9+7),5, 개행

//                 *******                       4                         공백(9+6), 7, 개행

//                *********                      5                         공백(9+5), 9, 개행

//     *         ***********          *          6  공백4, 1, 공백4, 공백4, 11, 공백4, 공백4, 1, 개행

//    ***      *************        ***          7  공백3, 3, 공백3, 공백3, 13, 공백3, 공백3, 3, 개행

//   *****    ***************     *****          8  공백2, 5, 공백2, 공백2, 15, 공백2, 공백2, 5, 개행

//  *******  *****************  *******          9  공백1, 7, 공백1, 공백1, 17, 공백1, 공백1, 7, 개행

// *************************************        10   공백0, 9, 공백0, 공백0, 19, 공백0, 공백 0, 9,개행

 

//line:1~2*n

//조건(line<=n)이 참일 때

//공백= (2*n-1)+(2*n-line) = 4*n -1-line

// = 2*line-1

//개행

//조건(line<=n)이 거짓일 때

//공백 = 2*n-line

// = 2*(line-n)-1

//공백 = 2*(2*n-line)    

// = 2*line-1

//공백 = 2*(2*n-line)

// = 2*(line-n)-1

//개행

 

#include <stdio.h>

 

int main(void)

{

    int n;

    int line, space, star;

 

    printf("높이:");

    scanf_s("%d", &n);//입력

 

    for (line = 1; line <= 2 * n; line++)//line: 1~2n

    {

        if (line <= n)//line is 1~n

        {

            for (space = 1; space <= (4 * n - 1 - line); space++)//공백 4*n - 1 - line

            {

                putchar(' ');

            }

            for (star = 1; star <= (2 * line - 1); star++)// 2*line -1

            {

                putchar('*');

            }

            putchar('\n');//개행

        }

        else//line is n+1 ~ 2n

        {

            for (space = 1; space <= (2 * n - line); space++)//공백 2n-line

            {

                putchar(' ');

            }

            for (star = 1; star <= 2 * (line - n) - 1; star++)// 2*(line-n)-1

            {

                putchar('*');

            }

            for (space = 1; space <= (2 * (2 * n - line)); space++)//공백 2*(2*n-line)

            {

                putchar(' ');

            }

            for (star = 1; star <= (2 * line - 1); star++)// 2*line-1

            {

                putchar('*');

            }

            for (space = 1; space <= (2 * (2 * n - line)); space++)//공백 2*(2*n-line)

            {

                putchar(' ');

            }

            for (star = 1; star <= 2 * (line - n) - 1; star++)// 2*(line-n)-1

            {

                putchar('*');

            }

            putchar('\n');//개행

        }

    }

    return 0;

}

반응형