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

przekazywanie tablicy[n][n] do funkcji

Ostatnio zmodyfikowano 2013-11-26 15:17
Autor Wiadomość
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...
P-97555
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.
P-97556
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.
P-97557
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:
C/C++
std::vector < std::vector < int > > array( 13, std::vector < int >( 15 ) ); //tablica 13 x 15
P-97561
pekfos
» 2013-11-26 12:29:52
Przekazuj jako int**, lub std::vector<std::vector<int>>&, w zależności, czego używasz.
P-97562
wojownik266
» 2013-11-26 13:02:04
A co do zwykłych tablic to można to zrobić jeszcze tak:
C/C++
#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;
}
P-97564
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
P-97570
« 1 »
  Strona 1 z 1