georginos1989 Δημοσ. 31 Οκτωβρίου 2010 Δημοσ. 31 Οκτωβρίου 2010 Τι κάνω λάθος στην παρακατω συναρτηση και δεν τρεχει σωστά? Η συνάρτηση παίρνει εναν δεικτη σε πινακα αλφαριθμητικών και το μεγεθος του πινακα και κανει ταξινομηση φυσαλίδας Στη main δευσμευω δυναμικά εναν πινακα n αλφαριμητικων και 10 χαρακτηρων το καθενα... Για πειτε τι πατατες κανω? Επειδη δοκίμαζα διάφορα και δεν δουλευε τπτ αν δειτε καμια μεγάλη πατάτα μη πετάτε ντομάτες.... bubble3__.txt
virxen75 Δημοσ. 31 Οκτωβρίου 2010 Δημοσ. 31 Οκτωβρίου 2010 το k το ορίζεις 2 φορες διορθωσε το το bubble3.h που κάνεις include που είναι?
georginos1989 Δημοσ. 31 Οκτωβρίου 2010 Μέλος Δημοσ. 31 Οκτωβρίου 2010 Περιέχει μονο τη δήλωση της bubble3
MeTaXaS4 Δημοσ. 31 Οκτωβρίου 2010 Δημοσ. 31 Οκτωβρίου 2010 Τι κάνω λάθος στην παρακατω συναρτηση και δεν τρεχει σωστά?Η συνάρτηση παίρνει εναν δεικτη σε πινακα αλφαριθμητικών και το μεγεθος του πινακα και κανει ταξινομηση φυσαλίδας Στη main δευσμευω δυναμικά εναν πινακα n αλφαριμητικων και 10 χαρακτηρων το καθενα... Για πειτε τι πατατες κανω? Επειδη δοκίμαζα διάφορα και δεν δουλευε τπτ αν δειτε καμια μεγάλη πατάτα μη πετάτε ντομάτες.... εφόσον λες ότι είναι όλα 10 χαρακτήρων γιατί βρίσκεις το length? >if(strlen(p[j-1])>strlen(p[j])) l=strlen(p[j-1]); else l=strlen(p[j]); το inlude "bubble3.h" δεν χρειάζεται και που το τρέχεις;; που είδες ότι δεν δουλεύει σωστά;; προσπάθησε να μην έχεις πολλά πράγματα εφόσον είναι απλώς μία σύγκριση και μετά η αντικατάσταση δηλαδή το >strcpy(temp,p[j-1]); strcpy(p[j-1],p[j]) ; strcpy(p[j],temp) ; άμα θέλεις πάλι σου την φτιάχνω κ εγώ, αλλά καλύτερα είναι να προσπαθήσεις μόνος σου..
georginos1989 Δημοσ. 31 Οκτωβρίου 2010 Μέλος Δημοσ. 31 Οκτωβρίου 2010 Εκανα το προγραμμα με header file... Στην main φτιαχνω δυναμικά τον πινακα και τον στελνω στην συναρτηση για να κανει ταξινόμηση.. Το strlen το δοκίμασα επειδη δεν έτρεχε μήπως τρέξει αλλά δεν.... Την έκανα την άσκηση αλλίως και δουλευει... Εβαλα να γίνονται όλα μεσα στην στη συνάρτηση... Να δημιουργεί πινακα να τον ταξινομει και να τον εμφανιζει και απλως στη main να καλεις αυτη τη συνάρτηση Αλλά θέλω να το κανω με δεικτες....
imitheos Δημοσ. 31 Οκτωβρίου 2010 Δημοσ. 31 Οκτωβρίου 2010 Εκανα το προγραμμα με header file... Στην main φτιαχνω δυναμικά τον πινακα και τον στελνω στην συναρτηση για να κανει ταξινόμηση.. Το strlen το δοκίμασα επειδη δεν έτρεχε μήπως τρέξει αλλά δεν.... Την έκανα την άσκηση αλλίως και δουλευει... Εβαλα να γίνονται όλα μεσα στην στη συνάρτηση... Να δημιουργεί πινακα να τον ταξινομει και να τον εμφανιζει και απλως στη main να καλεις αυτη τη συνάρτηση Αλλά θέλω να το κανω με δεικτες.... Γιατί δεν κάνεις επικόλληση μέσα σε spoiler και τη main ?
imitheos Δημοσ. 1 Νοεμβρίου 2010 Δημοσ. 1 Νοεμβρίου 2010 Με αντιγραφή και επικόλληση ή έστω κάνε το αρχείο που περιέχει την main προσάρτηση όπως έκανες το bubble3. Ό,τι σε βολεύει.
virxen75 Δημοσ. 1 Νοεμβρίου 2010 Δημοσ. 1 Νοεμβρίου 2010 Εκανα το προγραμμα με header file... Στην main φτιαχνω δυναμικά τον πινακα και τον στελνω στην συναρτηση για να κανει ταξινόμηση.. Το strlen το δοκίμασα επειδη δεν έτρεχε μήπως τρέξει αλλά δεν.... Την έκανα την άσκηση αλλίως και δουλευει... Εβαλα να γίνονται όλα μεσα στην στη συνάρτηση... Να δημιουργεί πινακα να τον ταξινομει και να τον εμφανιζει και απλως στη main να καλεις αυτη τη συνάρτηση Αλλά θέλω να το κανω με δεικτες.... στειλε τον κώδικα που έχεις κάνει χωρίς δείκτες να στο μετατρέψω.
georginos1989 Δημοσ. 1 Νοεμβρίου 2010 Μέλος Δημοσ. 1 Νοεμβρίου 2010 Να η άσκηση που δουλεύει... Τα αλφαριθμητικά είναι στο bubble3... Askisi3.zip
imitheos Δημοσ. 1 Νοεμβρίου 2010 Δημοσ. 1 Νοεμβρίου 2010 Να η άσκηση που δουλεύει... Τα αλφαριθμητικά είναι στο bubble3... Παραβλέπω τα #pragma και γενικά την ποιότητα ή μη του κώδικα και πάω στο bubble3 Στο bubble3.cpp ορίζεις > void bubble3(char **p, int N) ενώ στο bubble3.h ορίζεις > void bubble3(char *p, int N) Οπότε έχεις δύο διαφορετικές δηλώσεις για το ίδιο πράγμα. Στην main τώρα στο Unit1.cpp ο πίνακας σου ορίζεται ως > char c[n][10]; Το πρόβλημα σου είναι ότι ένας δισδιάστατος πίνακας είναι διαφορετικός τύπος από ένα δείκτη σε δείκτη. Είναι βέβαια γνωστό ότι όταν χρησιμοποιούμε ένα πίνακα ως παράμετρο συνάρτησης τότε η C μετατρέπει αυτόματα την δήλωση σε δείκτη του τύπου του πίνακα. > void mitsos(char p[10]) void mitsos(char p[]) void mitsos(char *p) Δηλαδή οι παραπάνω δηλώσεις είναι ισοδύναμες επειδή το p[10] είναι πίνακας από 10 χαρακτήρες οπότε η δήλωση είναι ισοδύναμη με δείκτη σε χαρακτήρα. Ας δούμε τώρα τι γίνεται στον δισδιάστατο πίνακα που έχεις. Το char[n][10] δηλώνει ένα πίνακα με στοιχεία πίνακες από 10 χαρακτήρες οπότε ο ισοδύναμος δείκτης δεν είναι char **p αλλά char (*p)[10] Έτσι θα πρέπει να δηλώσεις την συνάρτηση ως > void bubble3(char (*p)[10], int N) Και μετά να την καλέσεις ως > bubble3(c,N); (χωρίς τον αστερίσκο που έχεις τώρα δηλαδή) Μετά από αυτήν την αλλαγή το πρόγραμμά σου παίζει σωστά. Θέλει βέβαια βελτιώσεις αλλά εκείνες τις αφήνω σε σένα.
georginos1989 Δημοσ. 1 Νοεμβρίου 2010 Μέλος Δημοσ. 1 Νοεμβρίου 2010 εε sorry αυτό που σας έστειλα είναι με τις αλλαγές που δοκίμαζα... Ο κωδικας σε σχόλια και αν αλλαξω την συνάρτηση με μονο ορισμα το Ν ειναι που το ειχα κανει χωρίς δείκτες και ετρεχε ---------- Προσθήκη στις 21:47 ---------- Προηγούμενο μήνυμα στις 21:42 ---------- Μόλις το δοκίμασα με τις αλλαγές που είπες και δουλευει... thanks.. Τι θες να πεις για το #pragma? Δεν πρεπει να υπάρχει εκει?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.