W 개발 일지

C - While문 이용하여 *별로 삼각형 만들기 3 본문

C

C - While문 이용하여 *별로 삼각형 만들기 3

waVwe 2020. 10. 8. 22:23
반응형

이번에 임의의 숫자를 입력받아 그 수 만큼 While문을 이용하여 만들어 볼 삼각형의 모양은 이렇다.

    *
   **
  ***
 ****
*****
cs

 

사실 *별로 삼각형 찍기는 for문을 이용하는 것이 코드를 봤을 때도, 만들 때도 이해하기가 쉽다.

하지만 for문으로 만들 수 있는 것은 While문으로도 만들 수 있다.

 

먼저 완성된 코드는 아래와 같다.

#include<stdio.h>
int main()
{
  int i,j,k,num;
  scanf("%d",&num);
 
  while(i<=num){
    j=1;
 
    while(j<=num-i){
      printf(" ");
      j++;
    }
    k=1;
 
    while(k<=i){
      printf("*");
      k++;
    }
 
    printf("\n");
    i++;
  }
 
  return 0;
}
cs

 

이번 삼각형은 저번 글에서 만든 삼각형과는 다르게 오른쪽에서 왼쪽으로 늘어나는 삼각형이다.

 

이 삼각형을 만들기 위해서 생각해봐야 하는 것은 '공백'이다.

임의로 주어진 숫자가 5라고 가정했을 때, 우리는 총 5행 5열의 공간을 만들어야 한다.

첫째줄은 4개의 공백 " "과 1개의 별로 이루어져 있고

두번째줄은 3개의 공백 " "과 2개의 별로 이루어져 있다.

 

위의 특징을 감안해 코드를 짜보자.

int i,j,k,num;
  scanf("%d",&num);
cs

 

줄, 별, 공백의 갯수의 변수인 ,i , j, k를 선언하고 입력받을 숫자의 변수인 num도 선언한다.

그리고 scanf를 통해 숫자를 입력받는다.

 

첫번째 while은 입력받은 숫자만큼의 열을 만들어야 한다. 

while(i<=num)
cs

 

두번째 while은 공백의 갯수를 셀 것이다.

j=1;
    while(j<=num-i){
      printf(" ");
      j++;
    }
cs

 

공백은 무조건 줄의 첫번째부터 시작하니 j=1;을 입력하고

공백의 갯수는 입력받은 수에서 줄을 뺀 숫자와 같다.

예시로 5을 입력 받았다면

첫번째 줄(i)의 공백의 갯수(j)는 4(num-i)이게 되는 것이다.

공백을 출력하고 j++;

k=1;
    while(k<=i){
      printf("*");
      k++;
    }
   
cs

 

 

세번째 while로는 별을 찍을 것이다.

첫째줄부터 무조건 별이 한개가 찍히며 시작하므로 k=1;

별의 갯수는 줄과 같다. 첫째줄에 한 개, 둘째줄에 두개이므로

조건식을 k<=i로 한 후 별을 출력하고 k++;

printf("\n");
    i++;
cs

 

 

두번째와 세번째 while을 다 만들고 난 뒤에는 첫번째 while을 마무리할 시간이다.

공백과 별을 다 찍고난 뒤에는 "\n" 개행문자를 출력하고 i++;로 줄의 수를 증가시킨다.

 

 

잘 이해하고 코드를 완성했다면 다음과 같은 결과가 나온다.

 

 

 

 

 

더 자세한 설명은 삼각형 만들기 1 참조.

tildacoderecorder.tistory.com/1?category=918749

 

C언어 - While문 이용하여 * 별로 삼각형 만들기

만들고자 하는 삼각형의 모양은 임의의 숫자를 입력받아 그 숫자만큼의 크기의 삼각형을 만들어내는 것이다. 숫자가 5라면 아래와 같은 삼각형이 나와야 한다. * ** *** **** ***** 코드를 짜면 다음�

tildacoderecorder.tistory.com

 

반응형