ShayQ Temat założony przez niniejszego użytkownika |
przekazywanie tablicy[n][n] do funkcji » 2013-11-26 11:36:11 Witam! Mam taki banalny problem i nie mogę sobie już poradzić. Potrzebuję tablicy dwuwymiarowej [n][n] gdzie n program dostaje od użytkownika... I jak to teraz przekazać do funkcji? Cały czas wywala mi błąd że brak rozmiaru tablicy... Ogólnie to potrzebuję tablicy NxN wypełnioną jakimiś liczbami. Próbowałem czegoś takiego jak: vetor < vector < int > > tab ale nie jestem pewny czy to jest dobry wybór i nie potrafię wypełnić go polami... |
|
Monika90 |
» 2013-11-26 11:48:32 Chyba wystarczająco dobre będzie zapakowanie std::vector<int> do klasy i zdefiniowanie operator ()( size_t i, size_t j ) , który będzie zamieniał używany na zewnątrz indeks dwuwymiarowy na jednowymiarowy używany wewnętrznie. |
|
ShayQ Temat założony przez niniejszego użytkownika |
» 2013-11-26 12:02:36 Ehh jak dla mnie trochę nie jasno... lajk jeszcze jestem w tych sprawach xD A pomijając vector dałoby radę zrobić to na zwykłej tablicy[][]? Tylko mam problem z przekazaniem jej do funkcji poza maina... Przykładowo w mainie tworzę i wczytuję od użytkownika n(rozmiar). Potem tworzę tablicę[n][n] następnie inicjuję jej pola i teraz chciałbym ją przekazać do funkcji i nie wiem jak to zrobić bo wywala mi, że musi być znany rozmiar. |
|
Monika90 |
» 2013-11-26 12:29:10 W obecnej wersji C++ rozmiary tablic muszą być znane już w czasie kompilacji. Jak nie podoba ci się zdefiniowanie własnej klasy (kilka linii kodu), to używaj tego wektora wektorów: std::vector < std::vector < int > > array( 13, std::vector < int >( 15 ) );
|
|
pekfos |
» 2013-11-26 12:29:52 Przekazuj jako int**, lub std::vector<std::vector<int>>&, w zależności, czego używasz. |
|
wojownik266 |
» 2013-11-26 13:02:04 A co do zwykłych tablic to można to zrobić jeszcze tak: #include<iostream> using namespace std;
void printMatrix( int matrix[ 4 ][ 4 ] ) { for( int i = 0; i < 4; i++ ) { for( int j = 0; j < 4; j++ ) { cout << matrix[ i ][ j ] << " "; } cout << endl; } } int main() { int matrix[ 4 ][ 4 ] = { { 1, 2, 3, 4 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 } }; printMatrix( matrix ); cin.get(); return 0; }
|
|
ShayQ Temat założony przez niniejszego użytkownika |
» 2013-11-26 15:17:23 wojownik266 napisałem, że nie znam rozmiaru tablic a Ty przedstawiłeś wszystkie dane jawnie, więc to się ma nijak do mojego pytania, ale poradziłem sobie przez wywalenie vector < vector <int> > T przed maina w sensie jako globalną i tak jakby jest już wszystko ok o ile program nie wykrzaczy się na sprawdzarce xD dzięki za pomoc |
|
« 1 » |