OverIQ.com

C Program to print Pascal Triangle

Last updated on July 27, 2020


What is Pascal Triangle? #

The Pascal triangle is a triangular array of binomial coefficients. It looks like this:

1
2
3
4
5
6
row -> 0                   1     
row -> 1                1     1     
row -> 2             1     2     1     
row -> 3          1     3     3     1     
row -> 4       1     4     6     4     1     
row -> 5    1     5     10    10    5     1

The following is a formula to compute the value at any given place in the triangle:

\[
\begin{pmatrix}n\\k\end{pmatrix} = \frac{n!}{k!(n-k)!}
\]

where n stands for the row number and k stands for the column number. Note that the rows start from 0 and also the leftmost column is 0. So, to find out the value at 4th row, 2nd col, we do this:

\[
\begin{pmatrix}4\\2\end{pmatrix} = \frac{4!}{2!(4-2)!} = \frac{4!}{2!2!} = \frac{4*3}{2*1} = 6
\]

The following is a C program which prints the pascal triangle based upon the number of rows entered by the user:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**************************************
 * C Program to print Pascal Triangle
***************************************/

#include<stdio.h> // include stdio.h
unsigned long int factorial(unsigned long int);

int main() 
{
    int n;

    printf("Enter number of rows: ");
    scanf("%d", &n);

    printf("\n");

    // loop for number of rows
    for(int i = 0; i <= n; i++)
    {
        // loop to print leading spaces at each line
        for(int space = 0; space < n - i; space++)
        {
            printf("   ");
        }

        // loop to print numbers in each row
        for(int j = 0; j <= i; j++)
        {
            printf("%-5d ", factorial(i) / (factorial(j) * factorial(i-j) ) );
        }

        // print newline character
        printf("\n");
    }    

    return 0;
}

unsigned long int factorial(unsigned long int n)
{
    unsigned long int f = 1;

    while(n > 0)
    {
        f = f * n;
        n--;
    }

    return f;   
}

Expected Output:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Enter number of rows: 10

                              1     
                           1     1     
                        1     2     1     
                     1     3     3     1     
                  1     4     6     4     1     
               1     5     10    10    5     1     
            1     6     15    20    15    6     1     
         1     7     21    35    35    21    7     1     
      1     8     28    56    70    56    28    8     1     
   1     9     36    84    126   126   84    36    9     1     
1     10    45    120   210   252   210   120   45    10    1

Recommended Reading: