본문 바로가기

Code.D IT 프로젝트/C언어

[C언어 문제] 다이아몬드 출력하기(feat.모래시계)

C언어 문제

다이아몬드 출력하기



문제)

아래 그림과 같이 다이아몬드 모양이 나올 수 있도록 별(*)을 출력해주세요.



    *      
   ***     
  *****     
 *******       
*********       
*********       
 *******        
  *****     
   ***    
    *        



우선 위의 삼각형과 아래의 삼각형을 나눠서 각각 코딩을 짠 뒤, 합쳐보겠습니다.

줄 수i, 첫 번째 칸으로부터 공백의 공간 수j, 별의 개수h로 설정합니다.

아래와 같이 숫자를 먼저 놓고 코딩을 하면 더욱 수월하게 할 수 있습니다.



1) 위의 삼각형                  i         j         h     

    *                          1         4         1    
   ***                         2         3         3
  *****                        3         2         5   
 *******                       4         1         7    
*********                      5         0         9



 

2)아래의 삼각형                 i         j         h
  
*********                      1         0         9
 *******                       2         1         7
  *****                        3         2         5
   ***                         4         3         3
    *                          5         4         1


다이아몬드 출력 코드를 살펴보겠습니다.



#include <stdio.h>    
               
int main(void){         
                  
     int i, j, h;                    
     int result;                          
                                         
     //위의  삼각형 구현
     for(i=1; i<=5; i++)  {            
     for(j=5-i; j>=1; j--){               
     printf(" ");     //공백(" ") 출력           
     }
     
     //범위를 2씩 증가                                   
     result = 2*i;                   
     for(h=1; h<result; h++){        
     printf("*");   //별(*) 출력
     }
     printf("\n");              
     }
                                         
     //아래의 삼각형 구현 
     for(i=1; i<=5; i++){            
     for(j=1; j<i; j++){                  
     printf(" ");                
     }

      //범위를 2씩 감소
     result = (2*i-1);               
     for(h=9; h>=result; h--){       
     printf("*");       //별(*) 출력
     }
     printf("\n");               
     }

     return 0;                  
    
}



다음은 출력 결과입니다.






줄 수 i, 첫 번째 칸부터 공백의 수를 j, 별의 개수를 h로 각각 변수를 선언합니다.

위의 삼각형은 줄 수(i)가 늘어날 때마다

공백(j)이 한 칸씩 줄어드는 for문과

별(h)이 2개씩 늘어나는 for문을 작성합니다.

아래의 삼각형은 줄 수(i)가 늘어날 때마다

공백(j)이 한 칸씩 늘어나는 for문과

별(h)이 2개씩 줄어드는 for문을 작성합니다.



위의 삼각형과 아래 삼각형의 순서를 바꿔서 배치하면

*********       
 *******       
  *****     
   ***    
    *  
    *      
   ***     
  *****     
 *******       
*********  

모래시계 모양도 가능하겠죠?

반복한다 생각하시고 모래시계 모양도 코딩 한 번 해보시면서

코드를 완전히 익히시기 바랍니다 ~