thanos713 Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Είναι σα να μου λες να μάθω παρωχημένα και απαρχαιωμένα πράγματα για να κατανοήσω τα πιο προχωρημένα.Λάθος. Το χαμηλό επίπεδο υπάρχει και στα σύγχρονα και μάλιστα σε πλαίσια πρακτικής χρησιμότητας. Η C++ αρκεί με το παραπάνω. Εγώ όταν διάβαζα τις λίστες και τα δέντρα, σε C++ τα διάβαζα. Πολύ καλύτερα μελετώνται στην C++ παρά στην C, είναι εύλογο γιατί. Όταν έβλεπα C έφευγα τρέχοντας. Η φιλική μου συμβουλή είναι να μάθεις C++ κατευθείαν. Ούτε καν να ασχοληθείς με την C (πέραν από τις συντακτικές τους διαφορές που ακόμα τις ψάχνω...) Νομίζω πως ο Stroustrup έχει άλλη γνώμη...
dop Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Νομίζω πως ο Stroustrup έχει άλλη γνώμη... Huh?? Ιδίως ο Stroustrup είναι ο πρώτος που λέει μακριά από την C (που είναι extreme άποψη, αλλά καταλαβαίνω απόλυτα γιατί το λέει). http://www2.research.att.com/~bs/bs_faq.html#difference
nikolaos_ Δημοσ. 27 Σεπτεμβρίου 2010 Μέλος Δημοσ. 27 Σεπτεμβρίου 2010 Για τον OP, γιατί δεν αποθηκεύεις τους pointers σε ένα απλό array και να καλέσεις την qsort (που είναι στη βιβλιοθήκη της C) με την κατάλληλη function; Και τα data για τη σύγκριση των nodes που θα πάνε;; Δυστυχώς η δουλειά έχει σκαλώσει ακριβώς σε αυτό το σημείο και μάλλον θα το κάνω μόνος.
dop Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Και τα data για τη σύγκριση των nodes που θα πάνε;; Δυστυχώς η δουλειά έχει σκαλώσει ακριβώς σε αυτό το σημείο και μάλλον θα το κάνω μόνος. Τι εννοείς; Απλά χρειάζεται να υλοποιήσεις τη δικιά σου vector data structure (που αν κρατάς τα δεδομένα σαν pointer δε θα είναι πολύ χειρότερη από μία λίστα). Απλά χρειάζεται να υλοποιήσεις τον comparator για την qsort.
V.I.Smirnov Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 To παιδί ζήτησε ρητά κώδικα σε C που να ταξινομεί λίστες. Το να του λέτε να αλλάξει το πρόγραμμά του (που μάλλον δεν είναι απλό όπως δείχνει τo post του) ΔΕΝ απαντά στο ερώτημά του. Εγώ του υπέδειξα πού θα τον βρει ώστε να κάνει τη δουλειά του όπως το ζήτησε, άμεσα και σωστά. Αν δεν θέλει να πάρει το βιβλίο ας παιδευτεί. Τέλος, περί της C, είπα απλώς την προσωπική μου άποψη άποψη ως ερασιτέχνης και επιμένω τουλάχιστον από αυτήν την σκοπιά. Επαληθεύομαι διαρκώς στην πράξη, να όπως και τώρα. Η STL έχει έτοιμη κλάση vector που παίρνει ότι δεδομένα της βάλεις (template). Και έχει έτοιμα ballanced δυαδικά δέντρα που ταξινομούν τους κόμβους αυτόματα κατά την προσθήκη τους. Το πρόβλημα θα ήταν πολύ απλούστερο εκεί. Aλλά στην C δεν υπάρχει τίποτε, πρέπει να ξαναεφεύρεις τον τροχό (και μάλιστα πιο δύσκολα...) Ο Strustroup μπορεί να λέει ότι θέλει αλλά είναι πολύ κακός σύμβουλος για αρχάριους και ερασιτέχνες.
thanos713 Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Huh?? Ιδίως ο Stroustrup είναι ο πρώτος που λέει μακριά από την C (που είναι extreme άποψη, αλλά καταλαβαίνω απόλυτα γιατί το λέει). http://www2.research.att.com/~bs/bs_faq.html#difference Βασικά κάτω κάτω στο λινκ που έδωσα λέει ότι κάνει πλάκα...
MitsakosGR Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Είναι σα να μου λες να μάθω παρωχημένα και απαρχαιωμένα πράγματα για να κατανοήσω τα πιο προχωρημένα.Λάθος. Το χαμηλό επίπεδο υπάρχει και στα σύγχρονα και μάλιστα σε πλαίσια πρακτικής χρησιμότητας. Η C++ αρκεί με το παραπάνω. Εγώ όταν διάβαζα τις λίστες και τα δέντρα, σε C++ τα διάβαζα. Πολύ καλύτερα μελετώνται στην C++ παρά στην C, είναι εύλογο γιατί. Όταν έβλεπα C έφευγα τρέχοντας. Η φιλική μου συμβουλή είναι να μάθεις C++ κατευθείαν. Ούτε καν να ασχοληθείς με την C (πέραν από τις συντακτικές τους διαφορές που ακόμα τις ψάχνω...) Εννοεί τα δέντρα, όχι την C ή C++... Καλό είναι να τα μαθαίνεις για να βλέπεις τρόπους σκέψεις και λύσεις. Αν θα σου χρειαστούν είναι άλλο θέμα που στηρίζεται στο τι κάνεις. Προσωπικά έμαθα δομές δεδομένων σε C αλλά μετά πολύ εύκολα πάς σε C++.
dop Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 @thanos713: ναι, τώρα το είδα @V.I.Smirnov: από το να κάτσει να υλοποιήσει κάποιον αλγόριθμο για ταξινόμηση λίστας, δέντρων, δασών και θάμνων, σημαίνει ότι θα αλλάξει το πρόγραμμά του. Εφόσον θα δουλέψει που θα δουλέψει, γιατί δε μελετά και την εναλλακτική να αλλάξει την δομή του, να κάνει μια πιο φιλική προς το περιβάλλον και να χρησιμοποιήσει και ότι διαθέτει η C; Όσο για το C vs C++ το προσπερνώ, ένας καλός προγραμματιστής πρέπει να είναι ικανός με αρκετά programming paradigms και γλώσσες, όχι μόνον σε μία-δύο.
nikolaos_ Δημοσ. 27 Σεπτεμβρίου 2010 Μέλος Δημοσ. 27 Σεπτεμβρίου 2010 Ε, έτσι είναι επειδή στην ουσία υλοποιώ C μέσα σε C++ και ο κυριότερος λόγος γι' αυτό είναι να δείξω, μέσω της άσκησης, ότι ξέρω να ανακαλύπτω τον τροχό. Αυτός ο τροχός έχει τώρα ένα γρανάζι που λέγεται sorting single-linked list και σε αυτό έχω σκαλώσει. Αν μέχρι αύριο δε το έχω πετύχει μόνος, ας είναι και ένας εντελώς αναποτελεσματικός ο αλγόριθμος ταξινόμησης, αφού 5-10 στοιχεία θα ταξινομούνται κάθε φορά που χρειάζεται ταξινόμηση (τα 10000 είπα το απέφυγα), θα αναζητήσω το βιβλίο που αναφέρθηκε.
V.I.Smirnov Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 @dop Παραφράζεις αυτά που γράφω. Για το C vs C++ έγραψα ότι "είπα απλώς την προσωπική μου άποψη άποψη ως ερασιτέχνης και επιμένω τουλάχιστον από αυτήν την σκοπιά." Δεν μίλησα για έναν επαγγελματία που είναι ή πρέπει να φιλοδοξεί να γίνει γκουρού. Είναι ευνόητο ότι ένας γκουρού ξέρει και C. Αν επρόκειτο εδώ για τέτοια περίπτωση δεν χρειαζόταν να ρωτήσει και δεν θα υπήρχε καν θέμα. Αλλά από την σκοπιά ενός ερασιτέχνη που προσπαθεί καταρχήν να φτιάξει το πρόγραμμά του, η C είναι άχρηστη, δύσχρηστη και αποπροσανατολιστική επιλογή. Το παράδειγμα είναι πάλι εδώ : στην C++ υπάρχουν πολύ περισσότερες επιλογές είτε στην STL είτε στην βιβλιογραφία, και πολύ καλύτεροι τρόποι καταρχήν να φτιαχτεί το πρόγραμμα. Εγώ είπα τι να κάνει σε αυτό που ζήτησε για να μην παιδευτεί. Σε ότι αφορά τις αλλαγές του προγράμματος, είναι προφανές ότι η C++ προσφέρει πολύ περισσότερες δυνατότητες και πρέπει να προτιμάται ειδικά από όσους θέλουν καταρχήν να κάνουν τη δουλειά τους. Tαξινόμηση λιστών μπορεί να γίνει και αν οι λίστες είναι πρωτογενώς φτιαγμένες (δηλ. όχι έτοιμες) με κλάσεις. Δεν βλέπω κανένα ουσιαστικό λόγο τέτοια προγράμματα να γράφονται σε C κι όχι σε C++. -
thanos713 Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Παραφράζεις αυτά που γράφω. Δεν είναι και ο μόνος...
V.I.Smirnov Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Δεν είναι και ο μόνος... Δεν είναι δικό μου σφάλμα. Εγώ συνήθως σκέπτομαι πριν γράψω και προσπαθώ να εκφράζομαι με σαφήνεια και ακριβολογία, σε αντίθεση με πολλούς άλλους. Για μένα το παρόν θέμα έκλεισε και δεν θα ξαναγράψω.
thanos713 Δημοσ. 27 Σεπτεμβρίου 2010 Δημοσ. 27 Σεπτεμβρίου 2010 Δεν είναι δικό μου σφάλμα.Εγώ συνήθως σκέπτομαι πριν γράψω και προσπαθώ να εκφράζομαι με σαφήνεια και ακριβολογία, σε αντίθεση με πολλούς άλλους. Για μένα το παρόν θέμα έκλεισε και δεν θα ξαναγράψω. Όταν υπάρχει επικοινωνία ποτέ δεν φταίει ένας από τους 2...
Owlman Δημοσ. 3 Οκτωβρίου 2010 Δημοσ. 3 Οκτωβρίου 2010 Εγω ακομα δεν μπορώ να καταλαβω.. ενα πράγμα γίνεται με πολλούς τρόπους.. υπάρχουν αρκετά εργαλεία στη γλώσσα.. πώς γίνεται να ξέρουμε απο πρίν ποιός ειναι ο πιο οικονομικός απο πλευράς μνήμης?.. Οσο λιγότερη μνήμη τόσο καλύτερος ο κώδικας.. δηλαδη δοκιμάζεις και στην πορεία το αλλάζεις? υπάρχει κάποια ατυπη ιεράρχιση? Υπάρχει κανα βιβλίο που να τα εξηγεί αυτα?
MitsakosGR Δημοσ. 3 Οκτωβρίου 2010 Δημοσ. 3 Οκτωβρίου 2010 Εγω ακομα δεν μπορώ να καταλαβω.. ενα πράγμα γίνεται με πολλούς τρόπους.. υπάρχουν αρκετά εργαλεία στη γλώσσα.. πώς γίνεται να ξέρουμε απο πρίν ποιός ειναι ο πιο οικονομικός απο πλευράς μνήμης?.. Οσο λιγότερη μνήμη τόσο καλύτερος ο κώδικας.. δηλαδη δοκιμάζεις και στην πορεία το αλλάζεις? υπάρχει κάποια ατυπη ιεράρχιση? Υπάρχει κανα βιβλίο που να τα εξηγεί αυτα? Υπάρχουν τα βιβλία για δομές δεδομένων (data structures) που τα εξηγούν όλα αυτά. Τώρα για το ποιά μέδοδο θα ακολουθήσεις είναι καθαρά στο τι σε βολεύει για αυτό που θέλεις να κάνεις. Στα βιβλία εξηγούν την χρήση του καθενός.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.