Tak jak w temacie mam drobny problem z tablicami 2 wymiarowymi w C++, zapomnialem jak sie je tworzylo :D
oto dokladnie w ktorym fragmencie mam problem
cout
Drobny problem informatyczny
widocznie nie da sie kopiowac tresci programow nawet w komentarzach, wiec moj problem dotyczy tablic dynamicznych wielowymiarowych, program wyglada tak:
uzytkownik podaje liczbei, pozniej uzytkownik podaje liczbe j i chce by program zrobil tablice 2 wymiarowa o wymiarach i,j, tablice,i ,j zadeklarowalem jako "int", ale program w ogóle nie tworzy tablicy, czy ktos sie tutaj dobrze zna na tablicach wielowymiarowych i moglby mi podpowiedziec jak sie je tworzylo?
Tak na poczatku robilem i w samym tym widzi 6 bledow
wpisywalem
int tablica[j];
gdzie uzytkownik podawal wymiary tablicy i nic nie dzialalo, pozniej probowalem
tablica = new int [j]
i rowniez jej nie robil, jest tutaj ktos po studiach informatycznych lub osoba ktora dobrze opanowala C++?
No ja bym nie powiedział wcale taki drobny. Można użyć pewnych specyficznych funkcji, ale które dają tylko efekt przy kompilatorze Buildera, więc zaprezentuję sposób czysto językowy. Po pierwsze musisz postawić pierwszą tablice, a dopiero za pomocą pętli, np. for(;;) dla każdego jej elementu postawić następne tablice dynamiczne. W kodzie powinno wyglądać mniej więcej tak:
int widht, height; //tutaj deklarujesz zmienne określające wielkość macierzy
cin>> widht;
cin>> height;
int **tab = new int*[widht]; //tutaj stawiasz pierwszą tablicę
for(int i = 0; i < widht; i++) //tutaj dla każdych jej elementów ustawiasz nową tablicę
{
tab [ i ] = new int[height];
}
W taki sposób masz tablicę tab[widht][height] dla wartości int.
Pamiętaj, że po takiej operacji konieczne jest prawidłowe zwolnienie pamięci!! Możesz to zrobić tak:
for(int x = 0; x < widht; x++)
{
delete [] tab[x]; //oczywiście nie znak [] a dwa kwadratowe nawiasy [ ]
}
delete [] tab;
Metoda działa, testowałem przed chwilą u siebie na kompilatorze Bloodshed Dev-C++ 4.9.9.2 oraz MS Visual C++. Pozdrawiam ;)