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

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

Δημοσ.

Και εγώ πήγα να γκαρίξω για την εμφάνιση του κώδικα αλλά βλέποντας τι έκανε το code-tag στον δικό μου, αμφιβάλλω αν φταίνε τα παιδιά.

...

 

Όντως, έχει μέγα θέμα το code-tag μετά την αναβάθμιση του φόρουμ, για αυτό για τον Starlight έκανα ειδική αναφορά στον κώδικα που είχε στο ideone.com. Για τον capoelo, ισχύει επίσης πως η στοίχιση μπορεί να οφείλεται στο code-tags, το παρακάτω όμως π.χ. δεν οφείλεται στο code-tag...

 

>
if(!strcmp(f[0],argv[1]))printf("The sum is:%d\n",k+j);

 

Δεν υπάρχει ούτε ένα κενό! Δεν υπάρχει καν αλλαγή γραμμής για το σώμα της if (EDIT: δεν είναι συντακτικό σφάλμα, πήγε αυτόματα το μυαλό από συνήθεια όταν βλέπει ; στο τέλος γραμμής που αρχίζει με if :P συν ότι είναι συντακτικό σφάλμα το ; στο τέλος).

 

Βρήκα κάτι που βοηθάει, αν η στοίχιση στον αυθεντικό κώδικα είναι με tabs (δεν δοκίμασα με spaces) τότε στο 1ο paste μέσα στο code-tag την διατηρεί. Αμέσως μετά την προεπισκόπηση όμως χάνονται όλα τα leading spaces. Η λύση που βρήκα είναι να κάνω ένα copy ( Ctrl+C) του μηνύματος πριν το κάνω προεπισκόπηση, και κατόπιν μια επικόλληση (Ctrl+V) αμέσως μετά, πριν συνεχίσω να γράφω/διορθώνω.

 

Αν και μέχρι να φτιαχτεί το code-tag, η πιο εύκολη λύση είναι μάλλον να ποστάρουμε τους κώδικές μας σε σελίδες τύπου ideone, pastebin, κλπ και να βάζουμε εδώ σκέτα links προς τα εκεί.

 

Κοιτα εγω πιστευω οτι ο κωδικας που ανεβασα ειναι μια πολυ καλη προσπαθεια

 

Εγώ πάλι όχι, διότι κάνει μπαμ πως είναι γραμμένος από αρχάριο που δεν έχει εμπεδώσει βασικές αρχές (όπως π.χ. πότε και γιατί συμφέρει να χρησιμοποιήσουμε συναρτήσεις, πότε και γιατί συμφέρει να χρησιμοποιήσουμε τοπικές μεταβλητές, πότε καθολικές μεταβλητές, πότε ορίσματα, κλπ, κατά πόσο αντιστοιχεί η υπογραφή μιας συνάρτησης στην διαδικασία που καλείται να διεκπεραιώσει, κοκ).

 

αλλα εσυ θες να την υποβαθμισεις επειδη δεν βαλαμε κεφαλαια στα ονοματα των μακροεντολων. To ειπες και μονος σου οτι δεν εχει σοβαρα λαθη αλλωστε.

 

Δεν γίνεται να υποβαθμίσεις κάτι που είναι ήδη υποβαθμισμένο. Επεσήμανα κάποια σημεία που κάνουν μπαμ και θα σου έδειχναν την πόρτα της εξόδου με τη μια σε οποιαδήποτε εισαγωγική συνέντευξη για δουλειά που ενέχει προγραμματισμό.

 

Ενταξει ο καθενας εχει τους λογους του κ τις συμπαθειες του . Θα διαβασω αυτο που δινεις με την wikipedia.

 

Είναι θέμα αντιπάθειας για παράδειγμα πως υπάρχει μια συνάρτηση read(char ch) η υπογραφή της οποίας παραπέμπει άμεσα στο διάβασμα ενός χαρακτήρα, αλλά στην πραγματικότητα είναι μια συνάρτηση που όχι μόνο διαβάζει ολόκληρη την είσοδο, όχι μόνο την επεξεργάζεται καθώς την διαβάζει, αλλά και το όρισμά της είναι τελείως άσχετο;

 

Είναι θέμα αντιπάθειας, ότι δεν δίνεις στον χρήστη τρόπο να τερματίσει το πρόγραμμα;

 

Είναι θέμα αντιπάθειας ότι π.χ. χρησιμοποιείς την διπλάσια μνήμη από όση πραγματικά χρειάζεται (2 πίνακες αντί για 1);

 

Είναι θέμα αντιπάθειας ότι δεν υπάρχει ομοιογενής στοίχιση στον κώδικά σου;

 

Τους κωδικες τους ανεβαζω προφανως και για να σχολιαζονται . Αν ηταν δεν θα τους ανεβαζα καν.

 

Οπότε γιατί αντιδράς εριστικά στην κριτική;

 

Για τον κωδικα που ανεβασες σου ειπα ποια ειναι η κριτικη μου.... οχι ολα μεσα στην main().

 

Τέλος, για την κριτική σου στον κώδικά μου, γιατί όχι όλα μέσα στην main(); Που είναι το πρόβλημα; Μήπως είναι τεράστια και χάνεσαι; (ούτε μιάμιση οθόνη δεν πιάνει). Μήπως δεν είναι σωστά δομημένη; Μήπως χρησιμοποιεί ακαταλαβίστικες ή ασυνεπείς ονομασίες; Μήπως χρησιμοποιεί αλλοπρόσαλλη στοίχιση; Μήπως δεν έχει σχόλια που να εξηγούν τι κάνει το κάθε της μπλοκ; Μήπως χρησιμοποιεί καθολικές μεταβλητές χωρίς λόγο;

 

Ποιο ακριβώς είναι το πρόβλημα;

  • Απαντ. 1,6k
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Δεν αντιδραω εριστικα στην κριτικη παιδια μην ειστε τοσο ευαισθητοι.... αμα πατε στις επιχειρησεις που λετε

και σας πουνε κατι περιεργο θα μουτρωσετε και θα σηκωθειτε να φυγετε? ελεος. Μην τα παιρνουμε ολα τοσο προσωπικα.... σε μια συζητηση θα χρειαστει να μπουμε και σε μια εγρηγορση μην μας λεει συνεχεια ναι ο άλλος γιατι ή μας κοροιδευει ή δεν καταλαβαινει τι του λεμε.

 

Και εσυ στην δικη σου υλοποιηση 2 πινακες χρησιμοποιεις.... στην δικη μου η μνημη που υποτιθεται οτι σπαταλαω

και το κανεις τοσο μεγαλο θεμα ειναι 26 x 1 = 26 bytes ? Αυτο υποβαθμιζει τον κωδικα μου? τον ηδη υποβαθμισμένο???? Aμα το μηκος του πινακα ηταν πολυ μεγαλυτερο απο αυτο θα ηταν αυτο που λες.

Μια χαρα τις ξερω τις βασικες αρχες.... αυτο με τον char σαν τοπικη μεταβλητη μου ξέφυγε και σενα σου χει ξεφυγει την αλλη φορα

σε δικο σου κωδικα αλλα δεν ειδα να πεις κατι φιλε. Εγω ειμαι ο εριστικος? ο κωδικας σου εκτυπωνε 2 διπλα κενα χωρις να χρειαζεται το ξεχασες? Το προσπέρασες απλα και δεν ειπες τιποτα.

 

Και αυτο με την συνεντευξη επειδη μου το εχεις πει αρκετες φορες.... οταν θα ειναι να παω να δωσω συνεντευξη σε ιδιωτικη επιχειρηση θα ερθεις και εσυ μαζι .... :P

 

p.s Δεν καταλαβα το προβλημα που ειναι οταν θα χρησιμοποιησεις σε ενα loop την getchar για να διαβασει ολοκληρη την εισοδο με την μια.... μπορεις να μου κρασαρεις το προγραμμα? καντο. Απο που αναγεται το οτι εγω δεν εχω καταλαβει ποτε συμφερει να χρησιμοποιούμε ή οχι τις συναρτήσεις ? Πλεον και ενα προγραμματακι προσθεσης - αφαιρεσης με συναρτησεις θα το εκανα.

Δημοσ.

Δεν αντιδραω εριστικα στην κριτικη παιδια μην ειστε τοσο ευαισθητοι.... αμα πατε στις επιχειρησεις που λετε

και σας πουνε κατι περιεργο θα μουτρωσετε και θα σηκωθειτε να φυγετε? ελεος. Μην τα παιρνουμε ολα τοσο προσωπικα....

 

Εμείς το παίρνουμε προσωπικά; Εσύ μίλησες για προσωπικές επιλογές κι εμείς σου εξηγήσαμε πως αυτά που ονομάζεις προσωπικές επιλογές είναι εδραιωμένα bad-practices, και μου απάντησες πως προσπαθώ να υποβαθμίσω τον κώδικά σου επειδή σε αντιπαθώ.

 

Και εσυ στην δικη σου υλοποιηση 2 πινακες χρησιμοποιεις.... στην δικη μου η μνημη που υποτιθεται οτι σπαταλαω

και το κανεις τοσο μεγαλο θεμα ειναι 26 x 1 = 26 bytes ? Αυτο υποβαθμιζει τον κωδικα μου? τον ηδη υποβαθμισμένο????

 

Καταρχήν έχεις δίκιο πως κι εγώ χρησιμοποιώ 2 πίνακες. My bad, εκ παραδρομής. Οπότε άκυρο, το παίρνω πίσω κι απολογούμαι.

 

Μια χαρα τις ξερω τις βασικες αρχες.... αυτο με τον char σαν τοπικη μεταβλητη μου ξέφυγε και σενα σου χει ξεφυγει την αλλη φορα

σε δικο σου κωδικα αλλα δεν ειδα να πεις κατι φιλε. Εγω ειμαι ο εριστικος? ο κωδικας σου εκτυπωνε 2 διπλα κενα χωρις να χρειαζεται το ξεχασες? Το προσπέρασες απλα και δεν ειπες τιποτα.

 

Δεν θυμάμαι σε τι αναφέρεσαι, πολύ ευχαρίστως όμως να απαντήσω σε οτιδήποτε αν μου το θυμίσεις (ιδανικά με κάποιο link στο νήμα). Θεωρώ όμως σίγουρο πως αποκλείεται να έχω βαφτίσει παραβλέψεις και λάθη μου μου ως προσωπικές επιλογές.

 

Επίσης ο κώδικάς σου δεν δείχνει πως ξέρεις τις βασικές αρχές. Τις βασικές αρχές δείχνουμε ότι τις ξέρουμε όταν τις εφαρμόζουμε στους κώδικές μας, ή όταν αιτιολογούμε για ποιους ακριβώς χρηστικούς λόγους δεν τις εφαρμόζουμε όταν δεν τις εφαρμοζουμε, ιδανικά με σχόλια δίπλα στις εναλλακτικές μας υλοποιήσεις.

 

Και αυτο με την συνεντευξη επειδη μου το εχεις πει αρκετες φορες.... οταν θα ειναι να παω να δωσω συνεντευξη σε ιδιωτικη επιχειρηση θα ερθεις και εσυ μαζι .... :P

Είμαι λίγο ακριβός :P

 

p.s Δεν καταλαβα το προβλημα που ειναι οταν θα χρησιμοποιησεις σε ενα loop την getchar για να διαβασει ολοκληρη την εισοδο με την μια.... μπορεις να μου κρασαρεις το προγραμμα? καντο.

 

Το πρόβλημα είναι πως η ονομασία και το όρισμα της συνάρτησης παραπέμπουν σε άλλη δουλειά από αυτή που κάνει πραγματικά η συνάρτηση (readability και όχι μόνο).

Δημοσ.

Εμείς το παίρνουμε προσωπικά; Εσύ μίλησες για προσωπικές επιλογές κι εμείς σου εξηγήσαμε πως αυτά που ονομάζεις προσωπικές επιλογές είναι εδραιωμένα bad-practices, και μου απάντησες πως προσπαθώ να υποβαθμίσω τον κώδικά σου επειδή σε αντιπαθώ.

 

Τα διορθωσα αυτα εδω και καμποση ωρα. Aπλα σου ειπα πως μπορει

για κάποια στιγμη μια υλοποιηση να γινει συνειδητα και με globals πραγμα που κανει

και ο King στο βιβλιο του αλλα δεν ειδα να τον πεταξει κανεις εξω απο τις επιχειρησεις ή να μην του εκδοσουν το βιβλιο!!!!

 

Επίσης ο κώδικάς σου δεν δείχνει πως ξέρεις τις βασικές αρχές. Τις βασικές αρχές δείχνουμε ότι τις ξέρουμε όταν τις εφαρμόζουμε στους κώδικές μας, ή όταν αιτιολογούμε για ποιους ακριβώς χρηστικούς λόγους δεν τις εφαρμόζουμε όταν δεν τις εφαρμοζουμε, ιδανικά με σχόλια δίπλα στις εναλλακτικές μας υλοποιήσεις.

 

Θελω να μου πεις συγκεκριμενα ρε συ τι σε κανει να πιστευεις οτι δεν εχω εφαρμοσει τις βασικες αρχες (εκτος απο τα λαθη που διορθωθηκαν πριν με τις μακροεντολες) και εκτος της υλοποιησης αυτου του κωδικα με συμβολοσειρες. Πες μου να σου εξηγησω οτιδηποτε θελεις γιατι ο κωδικας δεν εχει σχολια διπλα. Οποιο σημειο θες.... προφανως οσοι ειναι εμπειροι μπορουν να τον καταλαβατε και χωρις σχολια ή οχι? Για αυτο τον ποσταρα και χωρις . Τωρα αν καποιος δεν καταλαβαινε ας ρωτουσε.

 

Το πρόβλημα είναι πως η ονομασία και το όρισμα της συνάρτησης παραπέμπουν σε άλλη δουλειά από αυτή που κάνει πραγματικά η συνάρτηση (readability και όχι μόνο).

 

Μαλιστα δηλαδη σε ενοχλει που δεν λεω οτι η συναρτηση κάνει αντιστοιχια αναμεσα σε 2 πινακες και για κάθε γράμμα αυξανει την αντιστοιχη θέση του άλλου πίνακα... ( check_letters ) .

 

p.s Και θα σου εξηγησω γιατι διαφωνω με την δικη σου main. Γιατι αν χρειαστει να ξαναγράψεις κώδικα ο οποίος κάνει κάποιες ενέργειες πάνω σε μια προταση ... αυτη τη φορα απλα να την αντιστρεφει.... ή κατι αλλο οτι θες ας πουμε.... αν το ειχες κανει με συναρτησουλες θα την έπαιρνες αμεσως και τσουυυπ νατη μεσα... αλλωστε αυτος ειναι και ο λογος , ενας σημαντικος λογος... να μην διπλογραφουμε κωδικα. Ενω τωρα θα την πάρεις θα πρεπει να την ορισεις... να γραψεις το πρωτυπο της κτλπ κτλο δηλαδη να φτιαξεις αυτο που εχεις μεσα σε συναρτηση :P ενω πριν θα ηταν ετοιμη δουλεια.

Δημοσ.

Ωραια εξηγηση! Εγω ειχα αυτην ερωτηση :) Ευχαριστω!

 

Σε περιπτωση ΑΦΜ ομως δεν χρειαζεται καποια ειδικη hash συναρτηση σωστα;

 

 

Εγω εχω μια "ασκηση" οπου εχω δυο structs τα οποια ειναι καπως ετσι

 

struct afm

{

int afm;

struct afm *next;

struct dep *depPtr;

}

 

struct dep

{

int poso;

int depAfm;

struct dep *next;

}

 

κατι τετοιο δεν θυμαμαι τωρα γιατι ειμαι απο κινητο..

 

Η ασκηση ζηταει να να κανω μια απλη συνδεδεμενη λιστα με τις παραπανω δομες και μετα να εφαρμοσω hash πανω στην λιστα..

 

Γινεται με καποιο τροπο, αφου κανω το αναλογο hash insert στον πινακα, να κανω lookup και να εχω αμεση προσβαση στο "struct afm" ???

 

Οκ τι να πεις... Ασκηση για hash και εχει μονο integers, αντε τωρα να καταλαβει γιατι υπαρχει το hashing

Δημοσ.

ευτυχώς κατάλαβα, χάρις στην εξήγηση του imitheos και το link του migf1.Αλλά θέλει εξάσκηση.

 

Αλλά ναι έχεις δίκαιο σε αυτό που λες και το περίεργο είναι ότι όντως ζητάει hashtable :/

Δημοσ.

Τα διορθωσα αυτα εδω και καμποση ωρα. Aπλα σου ειπα πως μπορει

για κάποια στιγμη μια υλοποιηση να γινει συνειδητα και με globals πραγμα που κανει

και ο King στο βιβλιο του αλλα δεν ειδα να τον πεταξει κανεις εξω απο τις επιχειρησεις ή να μην του εκδοσουν το βιβλιο!!!!

 

Είμαι 100% σίγουρος πως ο King το κάνει συνειδητά γνωρίζοντας τα υπέρ και τα κατά. Είμαι επίσης 100% σίγουρος πως δεν ισχύει το ίδιο για σένα. Για παράδειγμα στοιχηματίζω πως ο King διαβάζει αυτό μέσα σε 3 λεπτά και στα επόμενα 2 λεπτά μπορεί να συμπληρώσει κι άλλους 3-4 λόγους για την κάθε περίπτωση, εσύ; :P

 

Με άλλα λόγια, είσαι σε θέση να ξεχωρίσεις πότε και γιατί θα σε δαγκώσει ας πούμε το side-effect ενός global αν το κάνεις συνήθεια να γράφεις κώδικες με globals?

 

Θελω να μου πεις συγκεκριμενα ρε συ τι σε κανει να πιστευεις οτι δεν εχω εφαρμοσει τις βασικες αρχες (εκτος απο τα λαθη που διορθωθηκαν πριν με τις μακροεντολες) και εκτος της υλοποιησης αυτου του κωδικα με συμβολοσειρες. Πες μου να σου εξηγησω οτιδηποτε θελεις γιατι ο κωδικας δεν εχει σχολια διπλα. Οποιο σημειο θες.... προφανως οσοι ειναι εμπειροι μπορουν να τον καταλαβατε και χωρις σχολια ή οχι? Για αυτο τον ποσταρα και χωρις . Τωρα αν καποιος δεν καταλαβαινε ας ρωτουσε.

 

Εγώ προσωπικά κατάλαβα ακριβώς τι κάνει ο κώδικάς σου. Οι βασικές αρχές που δεν εφαρμόζεις είναι αυτές που σου έγραψα και πριν:

 

α) αχρείαστη χρήση globals

β) ανάμικτα πεζά και κεφαλαία στο #define

γ) δεν δίνεις στον χρήστη τρόπο να τερματίσει το πρόγραμμα

δ) ο ορισμός του ch στην main() δεν εξυπηρετεί απολύτως τίποτα

ε) η υπογραφή της συνάρτησης read() δεν είναι αντιπροσωπευτική της λειτουργίας της

στ) στην read() χρησιμοποιείς τον πίνακα check_letters[] ως global, αλλά στις check() και clear() τον περνάς ως όρισμα.

ζ) η στοίχιση του κώδικά σου δεν είναι ομοιογενής

 

Μαλιστα δηλαδη σε ενοχλει που δεν λεω οτι η συναρτηση κάνει αντιστοιχια αναμεσα σε 2 πινακες και για κάθε γράμμα αυξανει την αντιστοιχη θέση του άλλου πίνακα... ( check_letters ) .

 

Εμένα δεν με ενοχλεί τίποτα, εγώ επισημαίνω σημεία στον κώδικα τα οποία βάση της εμπειρίας μου τον καθιστούν κακό κώδικα.

 

ευτυχώς κατάλαβα, χάρις στην εξήγηση του imitheos και το link του migf1.Αλλά θέλει εξάσκηση.

 

Αλλά ναι έχεις δίκαιο σε αυτό που λες και το περίεργο είναι ότι όντως ζητάει hashtable :/

 

Όταν βρεις χρόνο βάλε την εκφώνηση να τη δούμε (αν κι εγώ την κάνω σήμερα, και θα επιστρέψω μάλλον στις 21... παίζει να γυρίσω στο ενδιάμεσο για 1-2 μέρες όμως).

 

p.s Και θα σου εξηγησω γιατι διαφωνω με την δικη σου main. Γιατι αν χρειαστει να ξαναγράψεις κώδικα ο οποίος κάνει κάποιες ενέργειες πάνω σε μια προταση ... αυτη τη φορα απλα να την αντιστρεφει.... ή κατι αλλο οτι θες ας πουμε.... αν το ειχες κανει με συναρτησουλες θα την έπαιρνες αμεσως και τσουυυπ νατη μεσα... αλλωστε αυτος ειναι και ο λογος , ενας σημαντικος λογος... να μην διπλογραφουμε κωδικα. Ενω τωρα θα την πάρεις θα πρεπει να την ορισεις... να γραψεις το πρωτυπο της κτλπ κτλο δηλαδη να φτιαξεις αυτο που εχεις μεσα σε συναρτηση :P ενω πριν θα ηταν ετοιμη δουλεια.

 

Πως ακριβώς 2 συναρτήσεις που κάνουν 2 τελείως διαφορετικά πράγματα (μέτρημα γραμμάτων vs αντιστροφή πρότασης) μπορούν να θεωρηθούν δομικά ισοδύναμες; Αδυνατώ να το κατανοήσω!

Δημοσ. (επεξεργασμένο)

http://www.insomnia....c/page__st__210

 

εδω έχεις κανει ένα λαθος στην συμβολοσειρα. Θα επρεπε να πω οτι ο κωδικας σου ειναι κακος και να αρχισω την αυστηρη κριτικη?

Και οτι αμα πας σε επιχειρηση θα πρεπει να φυγεις αεροπορικως???? απο το παραθυρο. Επειδη λετε εμενα εριστικο μετα.

Ανθρωπος εισαι φιλε. Δεν εισαι μηχανη. Αλλα και μηχανη να ησουν το σφαλμα θα ηταν σιγουρο. Εξηγησα οτι η τοπικη μεταβλητη χαρακτηρα μεσα στην συναρτηση ηταν λαθος ασυναισθητο. Ολα αυτα που χεις αριθμησει εχουν διορθωθει πολυ πριν το μηνυμα μου στο οποιο έκανες παράθεση.....

 

Ο King έχει αφιερωσει καμποσα χρονια για να πάρει πτυχια απο το Berkeley κτλπ... ειναι λιγακι αστειο να συγκριθουμε. Εγω μονος μου μαθαινω κ τελειωσα απλα και μια σχολη οπως ολος ο κοσμος.

 

Δεν θεωρησα στις συναρτησεις ποτε αυτο που λες δομικα ισοδυναμο. Αλλα ποιος θα σου ελεγε το οτιδηποτε αμα το εβαζες μεσα σε μια συναρτηση fill_and_rev και εκανε μια χαρα τη δουλεια του ?

 

Αν έχεις κατι σαν αυτο

 

>
//Εκτυπωση μιας προτασης χωρις τα κενα της....

#include <stdio.h>
int main(void)
{
char ch , array[100]={'\0'};
int i=0 , count=0;

printf("Enter a sentence: ");

while((ch=getchar())!='.' && ch != '?' && ch != '!' && i<100 )
array[i++]=ch;

for(count=0; count<i; count++)
{
if(array[count] == ' ')
continue;

else
printf("%c" , array[count]);
}

putchar(ch);

return 0;
}

 

Αυτο αν θελησεις να το παρεις σαν module και να το χρησιμοποιησεις σε εναν αλλο κωδικα σαν συναρτηση ωστε να μην διπλογραφεις ξανα κωδικα που θα θες να κανει αυτη τη δουλεια ετσι οπως το χω γραμμενο..... θα χρειαστει να το κανω συναρτηση. Με οτι αυτο συνεπαγεται..... ενω αν ηταν ετοιμο πραγμα που δεν ειναι στην δικη σου main() δεν θα ειχες τετοιο θεμα. Τωρα εσυ τι θα κανεις? θα ξαναγραψεις τον κωδικα αν χρειαστεις τον ιδιο σε αλλο προγραμμα?

 

Στον δικο σου κωδικα... αν υποθεσουμε οτι αυτο εδω θα το χρησιμοποιησεις :

 

>

for (cp=input, len=0, nValid=0; *cp; cp++,len++)
{
if ( isalpha(*cp) ) {
lettcount[ tolower(*cp) - 'a' ]++;
nValid++;
}
}

 

Θα πρεπει να το κανεις συναρτηση..... δηλαδη εξτρα δουλεια ενω αν το ειχες φτιαξει εξαρχης και δεν ηταν ολα μεσα στην main() δεν θα ειχες αυτο το εξτρα μετα.... οι συναρτησεις ειναι για να μην διπλογραφουμε κωδικα ετσι δεν ειναι?

 

ΜΙας και το παμε αυστηρα δηλαδη... να τα δουμε ολα. Εστω και την τριχια :P

 

Υ.Γ1 Οταν λες οτι θα πρεπει η στοιχιση να ειναι ομοιογενης εννοεις οτι θα πρεπει να χρησιμοποιώ το Tab οταν γραφω κώδικα ?

 

Υ.Γ2 Οταν λες υπογραφη εννοεις την κεφαλιδα της συνάρτησης? Δωσε εσυ ενα αντιπροσωπευτικο ονομα να δουμε. Το process_input για μενα ειναι ενταξει παντως.

Επεξ/σία από Star_Light
Δημοσ.

Κοιτα εγω πιστευω οτι ο κωδικας που ανεβασα ειναι μια πολυ καλη προσπαθεια

αλλα εσυ θες να την υποβαθμισεις επειδη δεν βαλαμε κεφαλαια στα ονοματα των μακροεντολων.

To ειπες και μονος σου οτι δεν εχει σοβαρα λαθη αλλωστε.[..]

Διαβάζοντας τον κώδικα στα γρήγορα βλέπω ότι μετράς την εμφάνιση των γραμμάτων ως char, πράγμα που περιορίζει την ακρίβεια σου στους 127 χαρακτήρες, θα μπορούσες να προτιμήσεις το int αντί του char ώστε να αυξήσεις το εύρος των τιμών σου.

 

Τώρα αν κάποιος έχει ήδη παρατηρήσει αυτή την λεπτομέρεια ζητώ συγνώμη αλλά δεν μου είναι εύκολο αυτή την στιγμή να διαβάσω ολόκληρο το νήμα (το αναφέρω μιας και κουβεντιάζουμε το θέμα διαφορετικά δεν τρέχει και τίποτα).

 

Υ.Γ.

Στην θέση σου θα άκουγα τις συμβουλές που σου δόθηκαν ;)

Δημοσ.

Διαβάζοντας τον κώδικα στα γρήγορα βλέπω ότι μετράς την εμφάνιση των γραμμάτων ως char, πράγμα που περιορίζει την ακρίβεια σου στους 127 χαρακτήρες, θα μπορούσες να προτιμήσεις το int αντί του char ώστε να αυξήσεις το εύρος των τιμών σου.

 

Τώρα αν κάποιος έχει ήδη παρατηρήσει αυτή την λεπτομέρεια ζητώ συγνώμη αλλά δεν μου είναι εύκολο αυτή την στιγμή να διαβάσω ολόκληρο το νήμα (το αναφέρω μιας και κουβεντιάζουμε το θέμα διαφορετικά δεν τρέχει και τίποτα).

 

Υ.Γ.

Στην θέση σου θα άκουγα τις συμβουλές που σου δόθηκαν ;)

 

Οχι. Δεν την ειπε κανεις.

Ευχαριστω. Αν ο χρήστης δωσει τον ιδιο χαρακτηρα 128 φορες μεσα στην προταση (πραγμα σπανιο βεβαια)

θα κρασαρει το προγραμμα. Το σκεφτηκα και εγω αυτο με τον εναν πινακα να γινει int

κατι δεν μου κολλαγε καλα.

Δημοσ.

Επίσης στην συνθήκη του while σου είναι καλύτερο να βάλεις πρώτα το i<100 και μετά τις υπόλοιπες..

 

Έχει σημασια πιστεύεις???

 

Ολοκλήρωσα τον άλλο κώδικα ως προς τις διορθώσεις....βεβαια εκεινο που με προβληματιζει

ειναι οτι έχω βάλει 4 if μεσα στην συνάρτηση και έχει παραγεμισει. Δεν μ αρεσει και πολυ η οψη της

θα την προτιμουσα πιο λιτη και μαζεμενη .

 

http://ideone.com/44p1J

 

P.S Διαβασα οτι μια συναρτηση θα πρεπει να κανει καθε φορα μια εργασια.... δεν ξερω κατα ποσο θα πειραζε

καποια στιγμη να την βαλουμε να κάνει 2. Πχ να δεχεται απο τον χρηστη εισοδο και αυτοματα να αντιστρεφει και το string (αν θελουμε να κανει αντιστροφη).

 

P.S2 Η clear συναρτηση ειναι περιττη θα χρησιμοποιησω την memset μεσα στην main.

http://www.cplusplus.com/reference/clibrary/cstring/memset/

 

 

http://ideone.com/Gk8y0

 

να μια βελτιωμενη εκδοση.

Δημοσ.
Όντως, έχει μέγα θέμα το code-tag μετά την αναβάθμιση του φόρουμ[..]

Εγώ το έλυσα με την απενεργοποίηση των έξτρα χαρακτηριστικών του Editor κλείνοντας τα από τον διακόπτη με όνομα "Εναλλαγή Κατάστασης Επεξεργασίας" οπότε όλο το κείμενο γυρίζει σε φόντους σταθερού μήκους (monospace).

Βέβαια χάνονται όλα τα καλούδια / αυτοματισμοί μέσο πλήκτρων που προσφέρει ο Editor, αλλά δεν με πειράζει.

 

Δημοσ.

Όσον αναφορά το hashing με τους int τώρα που το σκέφτηκα ξανά λέω, γιατί να μην γίνεται; Το ίδιο αποτέλεσμα δεν είναι αν κάποιος έχει ΑΦΜ 1234 και ένα άλλος 2134; ή όχι;

 

Έχει σημασια πιστεύεις???

Ναι (για μένα!) γιατί πρέπει πρώτα να ελέγξεις αν υπάρχει χώρος για store μέσα στον πίνακα σου. Αν αποτύχει να μην συνεχίσει να διαβάζει τον επόμενο χαρακτήρα. Έχω μια υποψία οτι εκείνο το 100, πρέπει να γίνει 99 αλλά δεν είμαι σίγουρος. :unsure:

Δημοσ.

εις....βεβαια εκεινο που με προβληματιζει

ειναι οτι έχω βάλει 4 if μεσα στην συνάρτηση και έχει παραγεμισει. Δεν μ αρεσει και πολυ η οψη της

θα την προτιμουσα πιο λιτη και μαζεμενη .

 

http://ideone.com/44p1J

 

P.S Διαβασα οτι μια συναρτηση θα πρεπει να κανει καθε φορα μια εργασια.... δεν ξερω κατα ποσο θα πειραζε

καποια στιγμη να την βαλουμε να κάνει 2. Πχ να δεχεται απο τον χρηστη εισοδο και αυτοματα να αντιστρεφει και το string (αν θελουμε να κανει αντιστροφη).

 

P.S2 Η clear συναρτηση ειναι περιττη θα χρησιμοποιησω την memset μεσα στην main.

http://www.cplusplus.com/reference/clibrary/cstring/memset/

 

 

http://ideone.com/Gk8y0

 

να μια βελτιωμενη εκδοση.

 

Εδώ βλέπουμε τα πιο γνωστά στυλ εσοχών. Σε C τα πιο ευρέως χρησιμοποιούμενα είναι K&R, Allman, Gnu. Δεν υπάρχει "το καλύτερο" στυλ και τι χρησιμοποιεί ο καθένας είναι καθαρά προσωπικό αλλά αυτό που έχει μεγάλη σημασία για να διαβάζεται ο κώδικας είναι η συνέπεια. Δηλαδή να επιλέξουμε ένα στυλ και να το ακολουθούμε φανατικά.

 

Ας δούμε την βελτιωμένη έκδοση του ideone:

Η main σου ακολουθεί Allman αλλά για κάποιο λόγο είναι όλη μετατοπισμένη μια εσοχή προς τα μέσα σε σχέση με τις άλλες συναρτήσεις.

 

>
       while((ch=tolower(getchar()))!='\n')
       {
               if( !isalpha(ch)  && sentimel ) 
                       {
                               puts(" Δεν υπάρχει έγκυρη προταση. ");
                                       exit(EXIT_SUCCESS);
                       }               
                       }  // Εκτός loop

               if( sentimel )
                       {
                               puts(" Kενή προταση. ");
                               exit(EXIT_SUCCESS);
                       }

Στην process_input στο while φαίνεται ότι πας να χρησιμοποιήσεις Allman ενώ οι προτάσεις που είναι μέσα στο while χρησιμοποιούν Whitesmith. Σαν να μην έφτανε αυτό, το κλείσιμο του while γίνεται στο ίδιο επίπεδο εσοχής με τις μέσα προτάσεις και το if sentimel ενώ θα έπρεπε να είναι στο ίδιο επίπεδο εσοχής με το while είναι ένα επίπεδο μέσα. Τα ίδια ισχύουν και για την συνάρτηση check.

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

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