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ń:
- 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]);
}