c·c++/c 프로그래밍

파스칼의 삼각형(2차원 배열)

바로이순간 2014. 3. 21. 13:12

#include <stdio.h> 

// 파스칼 삼각형 생성 함수. 

void pascal(int (*p)[100], int size) { 

    int i, j; 

    for(i=0;i<size;i+=1) { 

        p[i][0]=1;

        for(j=1;j<i+1;j+=1) { 

            p[i][j]=p[i-1][j-1]+p[i-1][j];  

        } 

    } 

// 파스칼 삼각형 출력함수. 

void printpascal(int (*p)[100], int size) { 

    int i, j; 

    for(i=0;i<size;i+=1) { 

        for(j=0;j<i+1;j+=1) { 

            printf("%4d ", p[i][j]); 

        } 

        printf("\n"); 

    } 

int main() { 

    // 이차배열 선언과 함께 0 으로 초기화. 

    int arr[100][100] = {0,};

    int n, k;


    // n의 최대값은 99입니다. 

    printf("n k = ");

    scanf("%d%d", &n, &k); 

    pascal(arr, n+1); 

    printpascal(arr, n+1);

    printf("%dC%d=%d\n", n, k, arr[n][k]);


    return 0; 

===============================================================

#include <stdio.h> 

int main() { 

    // 이차배열 선언과 함께 0 으로 초기화. 

    FILE *fout;

    int p[25][25] = {0,};

    int i, j, n;


    // n의 최대값은 23입니다. 

    printf("n값은 = ? ");

    scanf("%d", &n); 


    for(i=0;i<n+1;i+=1) { 

        p[i][0]=1;

        for(j=1;j<i+1;j+=1) { 

            p[i][j]=p[i-1][j-1]+p[i-1][j];  

        } 

    } 


    fout=fopen("pascal.txt", "w");

    if(fout==NULL) {

        printf("파일을 쓸 수 없습니다.");

        return 1;

    }

    for(i=0;i<n+1;i+=1) { 

        for(j=0;j<n-i;j+=1) {

            fprintf(fout, "  ");

        }

        for(j=0;j<i+1;j+=1) { 

            fprintf(fout, "%4d", p[i][j]); 

        } 

        fprintf(fout, "\n"); 

    } 

    fclose(fout);


    return 0;