Προς το περιεχόμενο

Δεν μπορω να ορίσω ενα πινακα string C++


lolek

Προτεινόμενες αναρτήσεις

Δημοσ.

Σε ενα προγραμμα C++ εχω ενα αρχειο με τις συναρτησεις μου και

θελω να ορισω ενα πινακα string myStrings[N][N] στην αρχη του κώδικα

ωστε να τον βλεπουν ολες.Το προβλημα ειναι οτι το Ν το παιρνω

απο ενα αρχειο txt οποτε οταν παω να ορισω τον πινακα μαλλον επειδη

δεν εχει διαβασει ακομα το N ή επειδη αυτο δεν ειναι σταθερο μου βγαζει

σφαλμα.Αν βάλω string myStrings[5][5] πχ δεν βγαζει σφαλμα.

 

Μπορει κάποιος να μου προτεινει μια λυση?

Δημοσ.

Σε ενα προγραμμα C++ εχω ενα αρχειο με τις συναρτησεις μου και

θελω να ορισω ενα πινακα string myStrings[N][N] στην αρχη του κώδικα

ωστε να τον βλεπουν ολες.Το προβλημα ειναι οτι το Ν το παιρνω

απο ενα αρχειο txt οποτε οταν παω να ορισω τον πινακα μαλλον επειδη

δεν εχει διαβασει ακομα το N ή επειδη αυτο δεν ειναι σταθερο μου βγαζει

σφαλμα.Αν βάλω string myStrings[5][5] πχ δεν βγαζει σφαλμα.

 

Μπορει κάποιος να μου προτεινει μια λυση?

 

Αυτό πρέπει να το κάνεις με δυναμικό πίνακα (pointer) ή με vectors.

>string** myStrings; //Δημιουργία δισδιάστατου πίνακα (pointer σε pointer)
myStrings = new string* [N];//Ορισμός της πρώτης διάστασης
for(int i=0; i<N; ++i)
  myStrings[i] = new string [N];//Ορισμός δεύτερης διάστασης για κάθε στοιχείο του πίνακα.

Δημοσ.

Πρέπει να κάνεις δυναμική δέσμευση μνήμης με την malloc.Δηλαδή πρέπει να ψάξεις για pointers και πώς αυτοί σχετίζονται με arrays.Να ξέρεις πάντως ότι επειδή έχεις δισδιάστατο πίνακα θα χρησιμοποιήσεις δείκτη σε δείκτη.

Edit:Συγγνώμη προφανώς στη c++ γίνετε και πιο εύκολα.

Δημοσ.

Ωραίος..Ευχαριστω.Αν θελω τωρα να αναφερθω στο 10 στοιχειο

ενος 5*5 θα το κανω κανονικα myStrings[2][5] ?

Δημοσ.

Ωραίος..Ευχαριστω.Αν θελω τωρα να αναφερθω στο 10 στοιχειο

ενος 5*5 θα το κανω κανονικα myStrings[2][5] ?

 

Μην ξεχνάς ότι η αρίθμηση ξεκινάει από το 0. Οπότε το myStrings[2][5] βγαίνει εκτός ορίων για πίνακα 5x5...

myStrings[0][0] είναι το πρώτο στοιχείο και mystrings[4][4] είναι το τελευταίο. Οπότε το myStrings[1][4] δίνει αυτό που θέλεις.

Δημοσ.

Πρέπει να κάνεις δυναμική δέσμευση μνήμης με την malloc.Δηλαδή πρέπει να ψάξεις για pointers και πώς αυτοί σχετίζονται με arrays.Να ξέρεις πάντως ότι επειδή έχεις δισδιάστατο πίνακα θα χρησιμοποιήσεις δείκτη σε δείκτη.

Edit:Συγγνώμη προφανώς στη c++ γίνετε και πιο εύκολα.

 

Όχι malloc.....!!!! Αυτά είναι C κατάλοιπα :P

(να μην πω για calloc :P )

 

 

New και δόξα ο Δίας!

 

Θα μπορούσα να προτείνω την χρήση της βιβλιοθήκης ATL και να έχεις ένα vector αντί για

2D matrix.

 

Δηλαδή, σε έναν 5x5 πίνακα, όπου έχεις 25 στοιχεία, να έχεις έναν 1x25 πίνακα

(που εάν δήλωνες εξαρχής int[5][5] αυτό θα είχες).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...