Trójkąt Pascala i dylemat z dynamiczną alokacją pamięci przez realloc

0

Cześć!
Uczę się do zaliczeniówki z C i jedno z zadań, które mam rozwiązać jest takie:

Napisz program, który wypisze na ekran trójkąt Paskala o podanej przez użytkownika wysokości. W
programie korzystamy z tablicy jednowymiarowej, która przechowuje tylko aktualnie wypisywany
poziom. Na początku programu tablica przechowuje tylko jeden element: pas[0]=1. W każdej
kolejnej iteracji zwiększamy rozmiar tablicy o jeden element, wykorzystaj funkcję realloc. Zawsze
pas[0]=1 oraz pas[ostatni element]=1. W każdej iteracji tablicę uzupełniaj nowymi wartościami od
prawej do lewej.

Zaczęłam pisać kod i mam kilka pytań:

  1. jak rozwiązać problematyczną część - teraz realloc działa zawsze na tej samej tablicy. Czy mam jakoś (jeśli tak, to jak?) utworzyć n tablic i je reallocować, jakoś z free działać (jak?) czy może jakoś inaczej rozwiązać ten problem?
int main(void)
{
    int i,n;
    printf("Podaj głębokość trójkąta Pascala:\n");
    scanf("%d", &n);
    int *tab = (int*)malloc(sizeof(int));
    int *tab2;
    for(i=0;i<n;i++)
    {
        tab2=(int *)realloc(tab,1);
        print(tab2, i+1);
        printf("\n");
      //  free(tab2);
    }
    

return 0;
}
//****************************************************************************************
void print(int *tab, int size)
{
    int i;
    for(i=0;i<size;i++) printf("%d\t", tab[i]);
}
2

#include <stdio.h>
 
long factorial(int);
 
int main()
{
   int i, n, c;
 
   printf("Enter the number of rows you wish to see in pascal triangle\n");
   scanf("%d",&n);
 
   for (i = 0; i < n; i++)
   {
      for (c = 0; c <= (n - i - 2); c++)
         printf(" ");
 
      for (c = 0 ; c <= i; c++)
         printf("%ld ",factorial(i)/(factorial(c)*factorial(i-c)));
 
      printf("\n");
   }
 
   return 0;
}
 
long factorial(int n)
{
   int c;
   long result = 1;
 
   for (c = 1; c <= n; c++)
         result = result*c;
 
   return result;
}

http://ideone.com/por8fx
Przykładowy wynik:

      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 użytkowników online, w tym zalogowanych: 0, gości: 1