Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Tworzenie tablicy zmiennych podając nieznaną w trakcie kompilacji liczbę jej elementów

Ostatnio zmodyfikowano 2015-03-19 17:26
Autor Wiadomość
Fofokus
Temat założony przez niniejszego użytkownika
[C++] Tworzenie tablicy zmiennych podając nieznaną w trakcie kompilacji liczbę jej elementów
» 2015-03-17 22:46:23
Witam,
otóż, kurs programowania na tej stronie skończyłem już wieki temu i powiedzmy, że jestem już trochę dalej z materiałem, ale tworząc ostatnio program, którego zadaniem jest wytyczenie najkrótszej drogi z punktu A do B w układzie współrzędnych oraz przedstawienie całego procesu graficznie (tak, graficznie w konsoli) krok po kroku, natrafiłem na pewne dziwne zjawisko. Może abstrahując już od tego, co działo się w tym programie, chodzi o ten fragment:
C/C++
int roznica_w_wierszach, roznica_w_kolumnach;
roznica_w_wierszach = wsp_x_celu - wsp_x_pkt;
roznica_w_kolumnach = wsp_y_celu - wsp_y_pkt;

int liczba_elementow_tablicy = wartosc_bezwzgl( roznica_w_wierszach ) + wartosc_bezwzgledna( roznica_w_kolumnach );
char tabela_polecen[ liczba_elementow_tablicy ];

jak widać, ilość elementów tablicy (którą z jakiegoś powodu nazwałem tutaj tabelą...) jest zmienną, która powstaje w wyniku pewnych działań na innych zmiennych. Problem w tym że zmienne wsp_x_pkt, wsp_y_pkt, wsp_x_celu oraz wsp_y_celu są podawane przez użytkownika we wcześniejszej fazie programu, więc kompilator nie zna ilości elementów tablicy w momencie kompilacji. A w rozdziale o tablicach jednowymiarowych w kursie jest wyraźnie napisane, że

"Tworząc tablicę za pomocą powyższego zapisu należy pamiętać, że liczba_elementow musi być wartością stałą, która będzie znana w chwili kompilacji programu. Oznacza to, że użytkownik nie może określać rozmiaru tablicy w trakcie działania aplikacji (wspomniane ograniczenie dotyczy tylko i wyłącznie tablicy tworzonej w powyższy sposób)."

Mimo, że jak wspomniałem wcześniej, kompilator nie zna liczby elementów tablicy w momencie kompilacji to jednak program zdaje się działać sprawnie (wprawdzie nie jest jeszcze skończony, ale nie protestuje ani podczas kompilacji, ani podczas wykonywania programu.

Jednocześnie pamiętam, że miałem już kiedyś problem z tworzeniem tablicy, której liczby elementów nie znamy przed uruchomieniem programu, więc co stało się tutaj że się udało?
P-128658
pekfos
» 2015-03-17 22:52:29
Niestandardowe rozszerzenie kompilatora. Lepiej użyć std::vector<>.
P-128662
Brunon3
» 2015-03-18 06:43:42
Skończyłeś kurs a o tablicach dynamicznych nie słyszałeś?
P-128666
Fofokus
Temat założony przez niniejszego użytkownika
» 2015-03-19 17:26:43
Dzięki za pomoc :)
P-128778
« 1 »
  Strona 1 z 1