Rozmiar tablicy jako zmienna

0

Witam

Mam taki jeden problem z zadaniem, bo mam napisać program, który wypisze podaną przez użytkownika ilość liczb ciągu Fibbonacciego i wypisze je od największej do najmniejszej. Niby wszystko łatwe, algorytm na ciąg jest, wstawiam to w tablicę i później sortowanie, ale jak uzależnić rozmiar tablicy od decyzji użytkownika?
Tzn. jeżeli użytkownik bedzie chciał zobaczyć 5 pierwszych liczb ciagu, to do tego potrzeba tablicy o rozmiarze 5. Gdy próbuje stworzyć tablice, której rozmiar jest podany przez użytkownika i przetrzymywany w postaci zmiennej n, czyli tab [n], to wyskakuje mi błąd przy kompilacji, że "must be a constant value".
Czy jest na to jakiś sposób?
Dodam, że całość robie w C.

Pozdrawiam

0

w C99 są VLA więc to co opisałeś powinno działać. Natomiast "normalną" metodą jest dynamiczna alokacja pamięci (malloc, wskaźniki oraz free) Poczytaj o tym np. tutaj: http://pl.wikibooks.org/wiki/C/Wska%C5%BAniki#Dynamiczna_alokacja_pami.C4.99ci

A tak w zasadzie to do rozwiązania tego zadania nie potrzeba tablic, można użyć tego: http://en.wikipedia.org/wiki/Fibonacci_number#Computation_by_rounding (i obliczać do tyłu odejmując odpowiednio). Jeżeli już chcesz używać tablic, to sortowanie też nie jest potrzebne, po prostu wypisz tablicę od tyłu.

0

Dzięki za odpowiedź, rzeczywiście można to tak zrobić. Jak się dzisiaj dowiedziałem, to zrobienie tego w prosty sposób ze zmienną n nie działa w Visual Studio - zależy od kompilatora.
Dziękuję za pomoc.

0

można by użyć realloc i za każdym razem jak użytkownik poda liczbę powiększamy blok pamięci np o sizeof(int) dodatkowo musimy zliczyć ile elementów będzie miałą cała tablica. Tylko trza zastosować jakiś "znak stopu" jak będziemy wczytywać scanfem bo przecież nie wiemy jaki rozmiar na początku będzie miała tablica.

1 użytkowników online, w tym zalogowanych: 0, gości: 1