C 언어 피라미드 별 찍기 - c eon-eo pilamideu byeol jjiggi

C언어의 반복문을 공부하기 시작하면 제일 먼저 만나게 되는 별찍기 문제입니다.

피라미드 모양으로 별을 찍기 위해서는 "이중 for문"을 사용해야합니다.

예를 들어, 문제가 '5단 짜리 피라미드를 만드시오' 였다면, 

1. 5단 즉, 5행짜리 결과물을 만들어야 합니다.

2. 각 행에 공백과 별을 채워넣어야 합니다.

위 과정의 논리적 사고를 한 뒤, 손으로 끄적끄적하며 내가 만들 피라미드를 분석 해봅니다. (편의상 공백은 _(언더바)로 표시)

[피라미드 예시]

____*

___***

__*****

_*******

*********

위와 같은 피라미드를 그리고 싶다면 아래 표와 같이 분석이 가능합니다.

 공백

별(*) 

 1행

 4

 2행

 3

 3행

 2

 4행

 1

 5행

 0

그렇다면, 이제 코드는 어떻게 쓸 수 있을까요?

1. 먼저, 5행이 반복되어질 첫번째 for문을 작성합니다.

for ( int i = 0 ; i < 5 ; i++ )

{

printf("\n"); // 행마다 줄을 바꿔주고 이를 5회 반복하므로 5행 생성됨

}

2. 이제 이 안에 (1) 공백과 (2) 별(*)을 채워줄 for문을 작성합니다.

(1) 공백

for ( int j = 0 ; j < 5 - i ; j++ )

{

printf (" ") ; // 5-i 즉, i=0이면 5, i=1이면 4, ... ,i=5이면 0회 공백

}

(2) 별(*)

for( int k = 0 ; k < i * 2 + 1 ; k++ )

{

printf ("*") ; // i*2-1이라는 아이디어는 별이 홀수로 커지는 것을 알 수 있음

}

3. 위에서 작성한 for문을 합쳐줍니다.

for ( int i = 0 ; i < 5 ; i++ )

{

for ( int j = 0 ; j < 5 - i ; j++ ) //이중 for문으로 나타낸 이유는, 공백과 별은 한 행 안에서 이루어지는 과정이므로

{

printf (" ") ;

}

for( int k = 0 ; k < i * 2 + 1 ; k++ )

{

printf ("*") ;

}

printf("\n");

}

▽소스코드

C 언어 피라미드 별 찍기 - c eon-eo pilamideu byeol jjiggi

▽결과
 

▽심화된 피라미드 (역피라미드)

https://blog.naver.com/hsh5970/221789750846

C 언어 피라미드 별 찍기 - c eon-eo pilamideu byeol jjiggi

대표적인 for문 연습 방법인 별찍기에 대해 포스팅해보려합니다. 별찍기는 반복문을 사용해서 여러가지형태로 별(*)을 출력하는 말하는데요. 기본적인 사각형, 삼각형 이런것은 쉽게 구현이 가능하지만 피라미드, 마름모, 모래시계 이런것들은 생각보다 까다로워요. 특히 처음 반복문을 접하시는 분들은 많이 힘들어 하실거에요. 그래서 이번 포스팅에서는 상대적으로 쉬운 사각형, 삼각형부터 상대적으로 어려운 피라미드, 나비, 마름모까지 한번 만들어서 그 소스를 포스팅해보자 합니다.

사각형 만들기

for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
	printf("*");
    }
    printf("\n");
}

직각삼각형 만들기 -1

for(int i=0;i<5;i++){
    for(int j=0;j<=i;j++){
	printf("*");
    }
    printf("\n");
}
C 언어 피라미드 별 찍기 - c eon-eo pilamideu byeol jjiggi

직각삼각형 만들기-2

for(int i=0;i<5;i++){
    for(int j=0;j<5-i;j++){
	printf("*");
    }
    printf("\n");
}

피라미드 만들기-1

int num=5;
for(int i=0;i<num;i++){
    for(int j=num-1;j>i;j--){
        printf(" ");
    }
	    
    for(int j=0;j<2*i+1;j++){
	printf("*");
    }
    printf("\n");
}

피라미드 만들기-2

int num=5;
for(int i=0;i<num;i++){
    for(int j=0;j<i;j++){
         printf(" ");
     }

    for(int j=2*num-1;j>2*i;j--){
	printf("*");
    }
    printf("\n");
}

다이아몬드 만들기 (피라미드를 두개를 합치면 다이아몬드가 됩니다.)

int num=5;
for(int i=0;i<num;i++){
    for(int j=num-1;j>i;j--){
	printf(" ");
    }
		    
    for(int j=0;j<2*i+1;j++){
	printf("*");
    }
    printf("\n");
}
	
for(int i=1;i<num;i++){
   for(int j=0;j<i;j++){
	 printf(" ");
   }
	
    for(int j=2*num-1;j>2*i;j--){
         printf("*");
    }
    printf("\n");
}

모래시계 만들기

int start = 0, end = 10;
for(int i = 0; i < 9; i++) {
    if(i < 10/2){
  	start = i, end--;	
    }else{
  	start--, end++;	
    }
  
    for(int j = start; j > 0; j--){
  	printf(" ");
    } 
    for(int j = start; j < end; j++){
  	printf("*");	
    }
    printf("\n");
}