다차원 배열을 이용해 파스칼의 삼각형을 구성해보자
파스칼의 삼각형이란?
파스칼의 삼각형은 수학에서 이항계수를 삼각형 모양의 기하학적 형태로 배열한 것이다.
삼각형을 그리는 방법은
예를 들어, 네 번째 줄의 숫자 1과 3을 더하여 다섯 번째 줄의 4가 만들어진다.
즉 위 그림처럼 형성이된다.
이 프로그램은 파스칼의 삼각형에서 공백을 제거한 파스칼의삼각형이다.
소스를 분석해보자
#include <stdio.h>
void main (){
int tr[100][100]={0}, h, i, j;
scanf("%d", &h);
tr[1][1]=1; //1,1 위치에 1설정
for(i=2;i<=h+1;i++) //2번째줄부터 넣는다(맨윗줄부터들어감)
{
for(j=2;j<=i;j++){ //j=2에서부터 입력
tr[i][j]=tr[i-1][j]+tr[i-1][j-1]; //j==2일때 바로위꺼, 위에서왼쪽꺼 더함==1
}
}
for(i=2;i<=h+1;i++) //똑같이출력
{
for(j=2;j<=i;j++){
printf("%d", tr[i][j]);
}
printf("\n");
}
}
배열은 0번부터 시작해서
0번에 삼각형의 꼭대기 1을 넣고 시작 할 수도 있으나
이 소스는 인덱스 2번을 맨위 꼭짓점으로 시작하는 소스이다.
사람마다 같은 프로그램을 다르게 짜기때문에 이렇게 짜도 다르게 짜도 괜찮다.
int tr[100][100]={0}, h, i, j;
일단 숫자를 넣을 tr이라는 2차원배열을 선언하고
그 모든 배열에 0이란 값을 넣는다.
그리고 삼각형의 높이를 정해줄 h(height)를 선언하고
반복문을 돌릴 i와j를 선언한다.
scanf("%d", &h);
높이를 입력한다.
for(i=2;i<=h+1;i++) //i가 2일때부터 값을 입력한다.
{
for(j=2;j<=i;j++){ //j=2에서부터 입력
tr[i][j]=tr[i-1][j]+tr[i-1][j-1]; //j==2일때 바로위꺼, 위에서왼쪽꺼 더함==1
}
}
주석을 상세하게 달아 놓았다.
for(i=2;i<=h+1;i++)
{
for(j=2;j<=i;j++){
printf("%d", tr[i][j]);
}
printf("\n");
}
}
그리고 입력한 값을 출력한다.
그러면
위와 같이 실행될 것이다.
다음엔 공백을 넣은
이 소스를 분석해보자.
댓글 없음:
댓글 쓰기