*
**
***
****
*****
|
cs |
저번 글에서는 위와 같은 모양의 삼각형 만들기를 설명했었다.
tildacoderecorder.tistory.com/1?category=918749
이번 글에서는 거꾸로 위에서 부터 아래로 별이 적어지는 삼각형을 만들 것이다.
다만 임의의 숫자를 입력받아 삼각형의 크기를 정할 것이다.
*****
****
***
**
*
|
cs |
이 삼각형은 5를 입력받아 5줄로 삼각형을 만든 것이다.
큰 틀은 저번 글에서 만든 삼각형 만들기와 같다. While문을 두번 사용해 5행 5열의 공간을 만들어줘야 한다.
완성된 코드는 이와 같다.
#include <stdio.h>
int main()
{
int i=1,j=1,num;
scanf("%d",&num);
while(i<=num){
j=num;
while(j>=i){
printf("*");
j--;
}
printf("\n");
i++;
}
return 0;
}
|
cs |
이제 순서대로 뜯어보자.
int i=1,j=1,num;
scanf("%d",&num);
|
cs |
오와 열의 변수인 i와 j, 그리고 입력받을 숫자인 num 변수를 선언한다.
임의의 숫자를 입력받아야 하기 때문에 scanf도 사용해준다.
while(i<=num){
j=num;
while(j>=i){
printf("*");
j--;
}
printf("\n");
i++;
}
|
cs |
이미 저번 글에서 원리를 자세히 설명했으므로 이번 글에서는 조각 조각 뜯어 보지 않고 설명할 것이다.
i는 열, 즉 줄의 갯수를 뜻하고 j는 행, 별을 몇 개 찍을 것인가를 결정한다.
num이 5라고 예를 들었을 때, 1열에는 별이 5개, 2열에는 별이 4개 찍혀야 한다.
즉 i는 전과 같이 증가하되, 별의 갯수인 j는 작아져야 하는 것이다.
첫번재 while문을 적은 후
1열의 별의 갯수는 입력받은 숫자와 동일하니 먼저 j=num;을 적어준다.
이제
두번쨰 while문이 전과 다르므로 뜯어봐야 하는 부분이라고 볼 수 있다.
j=num;
while(j>=i){
printf("*");
j--;
}
|
cs |
j는 계속 작아지다가도 열의 갯수보다는 작아질 수 없으니 조건문은 j>=i가 된다.
printf("*")로 별을 찍고 j--; 로 j를 1 감소시킨다.
이 과정을 두 while 사이를 돌며 반복하게 되면
쉽게 역삼각형을 확인할 수 있게 된다.
더 자세한 설명을 위해서는 전 글 참조.
tildacoderecorder.tistory.com/1?category=918749
'C' 카테고리의 다른 글
연결리스트(Linked list) 마지막에서 두번째 데이터 출력 - C 언어 (0) | 2021.04.09 |
---|---|
연결리스트(Linked list) 생성 / 출력 - C 언어 (0) | 2021.04.09 |
포인터를 이용한 swap 함수 만들기 - C 언어 (0) | 2021.03.03 |
C - While문 이용하여 *별로 삼각형 만들기 3 (0) | 2020.10.08 |
While문 이용하여 * 별로 삼각형 만들기 - C 언어 (0) | 2020.10.06 |