Αποστολέας Θέμα: trisdiastatoi pinakes  (Αναγνώστηκε 944 φορές)

nicos

  • Νέος
  • *
  • Μηνύματα: 1
trisdiastatoi pinakes
« στις: 04 Μάι 2010, 10:55:14 μμ »
 :)re paidia gnorizei kanenas pos 8a diloso pinaka 3*4*5 60 stoixeion stin glossa c++ ;

Αλεξόπουλος Ανδρέας

  • Θαμώνας
  • ***
  • Μηνύματα: 44
Απ: trisdiastatoi pinakes
« Απάντηση #1 στις: 05 Μάι 2010, 01:03:50 πμ »
αν ο πίνακας ήταν με ακέραιους κάπως έτσι
int a [3][4][5];

στην C τουλάχιστον έτσι είναι, άρα αν δε κάνω λάθος και στην C++ με τον ίδιο τρόπο γίνεται η δήλωση

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3532
  • to Iterate is human to Recurse divine
Απ: trisdiastatoi pinakes
« Απάντηση #2 στις: 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 ;)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Αλεξόπουλος Ανδρέας

  • Θαμώνας
  • ***
  • Μηνύματα: 44
Απ: trisdiastatoi pinakes
« Απάντηση #3 στις: 05 Μάι 2010, 05:25:19 μμ »
απλά το να χειριστείς τρισδιάστατους πίνακες με pointers θέλει αρκετή εμπειρία στο προγραμματισμό για να μην μπλεχτείς!! όσο γι'αυτό που λες για το πώς τους περνάς σαν παράμετρο σε συνάρτηση (το οποίο δε μας λέει ο φίλος αν θέλει να το κάνει ή οχι) δε το θυμάμαι ακριβώς.