Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: nicos στις 04 Μαΐου 2010, 10:55:14 ΜΜ

Τίτλος: trisdiastatoi pinakes
Αποστολή από: nicos στις 04 Μαΐου 2010, 10:55:14 ΜΜ
 :)re paidia gnorizei kanenas pos 8a diloso pinaka 3*4*5 60 stoixeion stin glossa c++ ;
Τίτλος: Απ: trisdiastatoi pinakes
Αποστολή από: Αλεξόπουλος Ανδρέας στις 05 Μαΐου 2010, 01:03:50 ΠΜ
αν ο πίνακας ήταν με ακέραιους κάπως έτσι
int a [3][4][5];

στην C τουλάχιστον έτσι είναι, άρα αν δε κάνω λάθος και στην C++ με τον ίδιο τρόπο γίνεται η δήλωση
Τίτλος: Απ: trisdiastatoi pinakes
Αποστολή από: evry στις 05 Μαΐου 2010, 08:45:36 ΠΜ
Νομίζω ότι αν δηλώσεις τον πίνακα έτσι στατικά όταν τον περάσεις μέσα σε μια συνάρτηση σαν παράμετρο θα πρέπει να το γράψεις
int a[][4][5]  αν τα θυμάμαι καλά, ενώ με δείκτες νομίζω είναι καλύτερα int ***a;
Εδώ όμως πρέπει να δηλώσεις τον πίνακα δυναμικά, δηλαδή το σκεπτικό είναι ότι ο πίνακας είναι ουσιαστικά ένας δείκτης που δείχνει σε έναν πίνακα από δείκτες κάθε ένας από τους οποίους δείχνει σε έναν πίνακα από ακεραίους.  :-\

int ***array;

  array = new int**[3];
  for (int j = 0; j < 3; ++j) {
    array[j] = new int*[4];

    for (int k = 0; k < 4; ++k)
      array[j][k] = new int[5];
  }

φυσικά μπορείς να παίξεις και με vectors και να έχεις κάτι τέτοιο

vector<vector<vector<int>>> array;

δηλαδή vector of vectors of vectors of int

όπως και να έχει αν το πας δυναμικά μην ξεχάσεις τα delete ;)
Τίτλος: Απ: trisdiastatoi pinakes
Αποστολή από: Αλεξόπουλος Ανδρέας στις 05 Μαΐου 2010, 05:25:19 ΜΜ
απλά το να χειριστείς τρισδιάστατους πίνακες με pointers θέλει αρκετή εμπειρία στο προγραμματισμό για να μην μπλεχτείς!! όσο γι'αυτό που λες για το πώς τους περνάς σαν παράμετρο σε συνάρτηση (το οποίο δε μας λέει ο φίλος αν θέλει να το κάνει ή οχι) δε το θυμάμαι ακριβώς.