2013년 10월 19일 토요일

C언어-파스칼의삼각형(무공백)

다차원 배열을 이용해 파스칼의 삼각형을 구성해보자

파스칼의 삼각형이란?

파스칼의 삼각형은 수학에서 이항계수를 삼각형 모양의 기하학적 형태로 배열한 것이다.

삼각형을 그리는 방법은


  • 먼저 첫 번째 줄에는 숫자 1을 쓴다.
  • 그 다음 줄을 만들려면, 바로 위의 왼쪽 숫자와 오른쪽 숫자를 더한다. 

  • 예를 들어, 네 번째 줄의 숫자 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");
    }
    }

    그리고 입력한 값을 출력한다.

    그러면


    위와 같이 실행될 것이다.

    다음엔 공백을 넣은



    이 소스를 분석해보자.











    댓글 없음:

    댓글 쓰기