AEM 0001 0002 0003 0004 0005 0006 0007 0008 0009 0012 COMMENTS -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος "the right word is: ". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! -Πολύ σωστά τα σχόλια που έβαλες αλλά προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf.είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. - Δεν κάνει compile. Πολλά από τα λάθη είναι απο απροσεξία - Δε χρησιµοποιεί σωστά τις σταθερές (πλήθος/µέγεθος λέξεων) και ως αποτέλεσµα θα κάνει crash όταν εκτελεστεί. - Μη χρησιµοποιείς σχόλια τύπου C++ - Απαγορεύεται η χρήση καθολικών µεταβλητών χωρίς σοβαρό λόγο - Άσχηµη στοίχιση -Άσχηµα ονόµατα µεταβλητών - Η συνάρτηση έπρεπε να βρίσκει την τελευταία λέξη µεγίστου µήκους. - Δεν καλείς ποτέ τη συνάρτηση find_longest - Η find_longest δε λειτουργεί σωστά και δεν εκτυπώνει αποτέλεσµα - Πρόσεχε τη στοίχιση - Μη χρησιµοποιείς σχόλια τύπου C++ - Άσχηµα ονόµατα µεταβλητών 0010 - Πρέπει να χρησιµοποιείς σταθερές και όχι literals. 0011 ενθουσιαστικά - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτική χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. - Προσοχή στην στοίχιση των εντολών. Page 1
0013 0014 0015 0016 0017 0018 - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτικ χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. - Επίσης, αποτελεί καλή πρακτική τα ονόµατα των σταθερών που ορίζονται µε #de να αποτελούνται µόνο από κεφαλαίους χαρακτήρες. - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτικ χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. - Τα σχόλια για την κάθε συνάρτηση θα έπρεπε να εµφανίζονται πριν από αυτή και όχι στο τέλος του προγράµµατος. - Να µην αγνοείς τα warnings του compiler. Το συγκεκριµένο warning σε ενηµερώνει για τον λανθασµένο αριθµό ορισµάτων στην κλήση της συνάρτησης printf. - Αρκετή προσοχή στην στοίχιση των εντολών. - Δεν κάνει compile λόγω ορθογραφικού λάθους! - Μη χρησιµοποιείς σχόλια τύπου C++ - Το printf στη find_longest έπρεπε να είναι εκτός του for - Πρέπει να χρησιµοποιείς σταθερές και όχι literals. Λόγω κακής χρήσης literals το πρόγραµµά σου κάνει crash στο τέλος. Page 2
0019 0020 0021 0022 -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών (π.χ. όχι diafora ) και πινάκων (π.χ. όχι word). -Στην συνάρτηση find_longest() δηλώνεις την µεταβλητή diafora ως τύπου char ενώ η συνάρτηση strcmp() επιστρέφει έναν integer. Δες ξανά τι επιστρέφει η strcmp()! -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο word κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. -Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS. Δηλαδή στο πρόγραµµα σου αντί για i<75; θα έπρεπε να είχες γράψει i< NUMWORDS;. -Πρόσεχε λίγο πως δηλώνεις τα πρωτότυπα των συναρτήσεων σου. -Πρόσεχε πολύ την στοίχιση! - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτικ χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. - Προσοχή στην µορφοποίηση του µηνύµατος προς τον χρήστη. Αυτό που ζητούνταν ήταν µόνο η εκτύπωση της λέξης µε το µέγιστο µήκος. Είναι χρήσιµο η µορφοποίηση των µηνυµάτων προς τον χρήστη να συµµορφώνεται µε τις αντίστοιχες οδηγίες. - Οι αγκύλες '}' πρέπει να βρίσκονται στην ίδια στήλη µε την εντολή που ''κλείνουν''. -Καθόλου σχόλια -Καλύτερη στοίχιση Page 3
0023 0024 0025 πολύ οριακά -Βγαίνεις εκτός ορίων πίνακα στη find_longest γιατί το pos πηγαίνει µέχρι numwords-1 κι εσύ µέσα στην επανάληψη συγκρίνεις τη λέξη στο pos+1 του οποίου η µέγιστη τιµή είναι 74+1 =75 - Ο κώδικας σου δεν επιστρέφει τη µεγαλύτερη λεξικογραφικά λέξη, συγκρίνεις συνεχώς γειτονικά στοιχεία του πίνακα ενώ θα έπρεπε να συγκρίνεις ένα ένα τα στοιχεία του πίνακα µε την τοπικά µέγιστη λέξη. Επιπλέον, αν οι λέξεις είναι ίδιες θέτεις το maxword=0 που σηµαίνει ότι αναθέτεις ως µεγαλύτερη την πρώτη λέξη του πίνακα (γιατί?) - Θα έπρεπε να τυπώνεις τη λέξη µέσα στη find_longest - Για να τυπώσεις τη λέξη στη main θα έπρεπε η find_longest να είναι τύπου int και να επιστρέφεις τη θέση του πίνακα µε τη µεγαλυτερη λέξη. Έτσι, όπως το έχεις υλοποιήσει τώρα, η maxword στη find_longest είναι µια τοπική µεταβλητή και µετά το τέλος της κλήσης της συνάρτησης find_longest, η maxword παύει να υπάρχει. Η maxword που έχεις δηλώσει στη main είναι τοπική µεταβλητή της main και δεν έχει καµία σχέση µε αυτή της find_longest. - Να χρησιµοποιείς κεφαλαία γράµµατα για τις σταθερές -Το πρόγραµµα σου δεν κάνει compile. -Δεν έχεις δηλώσει τον πίνακα σου µέσα στην main(). -Λάθος στην printf() της find_longest(). Διάβασε καλά την θεωρία (πως τυπώνουµε έναν ακέραιο και πώς ένα string)! -Λογικό λάθος στην for() της συνάρτησης read_words(). -Η εκφώνηση της άσκησης ζητούσε να εκτυπώνεται µόνο η λέξη που είναι λεξικογραφικά µεγαλύτερη και τίποτα άλλο. Πρέπει να ακολουθείς ακριβώς τις οδηγίες! -Πρόσεχε πολύ την στοίχιση! - το πρόγραµµά σου δε δουλεύει σωστά και δεν τυπώνει τη µεγαλύτερη αλφαβητικά λέξη. - Στη read_words Λάθος η συνθήκη i>=74 στη for. - Δε θα έπρεπε να αποθηκεύεις µε scanf τις τιµές στην wordlist[wordsize], δηλ στην ουσία στη wordlist[75], η οποία αναφέρεται σε θέση µνήµης εκτός ορίων του πίνακα. - έτσι όπως χρησιµοποιείς την strcmp, αποθηκεύεις τη µικρότερη λέξη κάθε φορά - δε χρησιµοποιείς τις σταθερές - καθόλου σχόλια - καθόλου καλή στοίχιση Page 4
0026 0027 0028 0030 0031 0032 0032 -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο max κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (όχι max). -Δεν υπάρχουν επαρκή σχόλια! -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο max κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (π.χ. όχι max). -Στην printf() της find_longest() δεν χρειάζεται να βάλεις "%9s\n". Έτσι εκτυπώνεις πρώτα κενά και µετά την λέξη που είναι λεξικογραφικά µεγαλύτερη! Πρέπει να ακολουθείς ακριβώς τις οδηγίες! -Πρόσεχε την στοίχιση! Πολύ καλή η υλοποίηση της find_longest Καλό βέβαια θα ήταν να είχες πιο περιγραφικό όνοµα για τη µεταβλητή k ή έστω να σχολίαζες τι κάνει, π.χ. Αποθηκεύει τη θέση του πίνακα µε την µεγαλύτερη αλφαβητικά λέξη για το κοµµάτι του πίνακα που έχει εξεταστεί µέχρι εκείνη τη στιγµή(k<=i) -Το πρόγραµµα σου δεν κάνει compile. -Πολλά λογικά και συντακτικά λάθη τα οποία αναφέρονται σε ύλη προηγούµενων εργαστηρίων. Για παράδειγµα, λείπουν παρενθέσεις, ερωτηµατικά, τα scanf δεν έχουν σωστή σύνταξη, κτλ. -Η return(0); µπαίνει στο τέλος της main() και πριν το }. Διάβασε καλά την θεωρία! -Δεν δηλώνεις σωστά τα πρωτότυπα των συναρτήσεων. -Η κλήση των συναρτήσεων µέσα από την main() δεν γίνεται σωστά. -Γενικότερα, δεν έχεις καταλάβει ακριβώς ποιο είναι το ζητούµενο της άσκησης. Διάβασε καλά την εκφώνηση! Page 5
0033 0034 0035 0036 0037 0038 0638 1043 1067 -Η εκφώνηση της άσκησης ζητούσε να εκτυπώνεται µόνο η λέξη που είναι λεξικογραφικά µεγαλύτερη και τίποτα άλλο. Πρέπει να ακολουθείς ακριβώς τις οδηγίες! - Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS και όχι 75. -Λογικό λάθος µέσα στην for() της συνάρτησης find_longest(). Για να διατρέξεις και να συγκρίνεις όλες τις λέξεις που περιέχει το αρχείο input.1 θα πρέπει i<numwords. Γράφεις σωστό, στοιχισµένο, καθαρό κώδικα. Το επόµενο επίπεδο για σένα είναι να χρησιµοποιείς σχόλια, σύµφωνα µε τις οδηγίες του pdf που σας έχει δωθεί στο εργαστήριο. Σε αυτή την άσκηση έχεις σχολιάσει µόνο τί κάνει το πρόγραµµα σου και τίποτε άλλο. - Απαράδεκτα ονόµατα µεταβλητών. Να µην επαναληφθεί αυτό. - Το πρόγραµµα δε λειτουργεί σωστά. Αν είχες καλή στοίχιση, θα είχες βρει εύκολα το πρόβληµα - Το πρόγραµµα εµφανίζει λάθος κατά την µεταγλώττιση και αυτό οφείλεται στην µη δήλωση της µεταβλητής i εντός της συνάρτησης read_words. - Επίσης, υπάρχει λάθος στην υλοποίηση της συνάρτησης find_longest καθώς δεν αποθηκεύεται η θέση της λέξης µε το µέγιστο µήκος οπότε δεν είναι δυνατή η εκτύπωση αυτής, όπως ζητείται από τις προδιαγραφές της άσκη - Το πρόγραµµα δεν περιέχει σχόλια σχετικά µε την λειτουργία των συναρτήσεων read_words και find_longest, το οποίο είναι και ένα από τα ζητούµενα της άσκησης. - Η σταθερά NUMSIZE θα ήταν καλό να έχει πιο περιγραφικό όνοµα, όπως για παράδειγµα NUMWORDS. - Προσοχή στην στοίχιση. -Το πρόγραµµά σου δεν κάνει compile. -Δεν υλοποίησες σχεδόν καθόλου την συνάρτηση find_longest. Επιπλέον, δεν την καλείς πουθενά. -H εντολή for στην συνάρτηση find_longest είναι ηµιτελής, λείπουν τα {}. Γι'αυτό δεν κάνει compile. -Η συνάρτηση read_words πάντως είναι σωστή, εποµένως αν διαβάσεις παραπάνω θα τα καταφέρεις καλύτερα στο επόµενο εργαστήριο. -Πολύ σωστά τα σχόλια που έβαλες αλλά προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf.είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. Page 6
1072 1073 1074 1075 1076 1077 1078 -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος "Longest Word is: ". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! -Πολύ σωστά και αναλυτικά τα σχόλια που έβαλες αλλά προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf πριν από κάθε συνάρτηση.είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Πρόσεχε τι παραµέτρους δίνεις στην main(). Διάβασε καλά την θεωρία! -Πρόσεχε λίγο πως δηλώνεις τα πρωτότυπα των συναρτήσεων σου (µην αφήνεις κενά). -Να χρησιµοποιείς περιγραφικά ονόµατα σταθερών (π.χ. όχι grammes, sthles) -Στην printf() της find_longest() δεν χρειάζεται να βάλεις "%9s\n". Έτσι εκτυπώνεις πρώτα κενά και µετά την λέξη που είναι λεξικογραφικά µεγαλύτερη! Πρέπει να ακολουθείς ακριβώς τις οδηγίες! -Δεν υπάρχουν επαρκή σχόλια! -Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS. Δηλαδή στο πρόγραµµα σου αντί για i<=74; θα έπρεπε να είχες γράψει i<=numwords-1; Ή i<numwords; -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (π.χ. όχι max). -Δεν υπάρχουν επαρκή σχόλια! -Μην αφήνεις κενές γραµµές στον κώδικα σου όπου δεν χρειάζεται! - Τα σχόλια για την κάθε συνάρτηση θα έπρεπε να εµφανίζονται πριν από αυτή και όχι στο τέλος του προγράµµατος. - Προσοχή στην στοίχιση των εντολών. Page 7
1079 1080 1081 1082 1083 1084 -Το πρόγραµµά σου δε δουλεύει σωστά, δεν τυπώνει τη µεγαλύτερη λέξη -Στη read_words στο for(i=0;i<=numwords;i++) βγαίνεις εκτός ορίων πίνακα δεν υπάρχει το στοιχείο wordlist[75], οι θέσεις του πίνακα είναι από 0 έως 74. Θα έπρεπε η συνθήκη να είναι i<numwords. -Στη find-longest το for σου W φτάνει µέχρι WORDSIZE και όχι µέχρι NUMWORDS-1, οπότε διατρέχεις τον πίνακα µέχρι το στοιχείο 10. -Δε χρειάζονται τρία if, αλλά µόνο ένα για να βρεις τη µεγαλύτερη λέξη - Όταν τελειώσει η find-longest τα στοιχεία του πίνακα wordlist έχουν αλλάξει, εµείς θέλουµε να χρησιµοποιήσεις τα στοιχεία του πίνακα για νακάνεις τη σύγκριση αλλά χωρίς να τα αλλάξεις. - να στοιχίζεις καλύτερα τα σχόλιά σου - αντί για εργαστήριο 5, στο πρώτο σου σχόλιο γράψε µε µια πρόταση τί κάνει το πρόγραµµά σου -Το πρόγραµµά σου δεν κάνει αυτό που ζητάει η εκφώνηση. -Δεν εκτυπώνεις πουθενά την λέξη που ψάχνουµε! -Η εντολή for δεν θέλει ερωτηµατικό στο τέλος της. Όπως την έχεις τώρα, η συνάρτηση read_words διαβάζει µόνο µία λέξη. Διάβασε ξανά την αντίστοιχη θεωρία. -Η εντολή for στην συνάρτηση find_longest πρέπει να εκτελείται όσο i<numwords και όχι όσο i<=numwords. -Η εντολή if δεν θέλει ερωτηµατικό στο τέλος της. -Πρόσεξε την στοίχισή σου!!!! -Από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Η συνάρτηση read_words πάντως είναι σωστή, εποµένως αν διαβάσεις παραπάνω θα τα καταφέρεις καλύτερα στο επόµενο εργαστήριο. -Στην συνθήκη if(strlen(words[i])>max_numsize) έπρεπε να έχεις >= και όχι απλά >. Όπως το έχεις βρίσκεις την πρώτη λέξη µε το µεγαλύτερο µήκος και όχι την τελευταία. -Aπό εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. πολύ οριακά - Δε χρησιµοποιείς συναρτήσεις συµβολοσειρών και ως αποτέλεσµα όλοι οι υπολογισµοί είναι λάθος. - Μην αγνοείς τα compiler warnings. - Καλή δουλειά στα σχόλεια. - Πρόσεχε τη στοίχιση - Το πρόγραµµα δεν περιέχει σχόλια σχετικά µε την λειτουργία των συναρτήσεων read_words και find_longest, όπως απαιτούν οι προδιαγραφές της άσκησης. - Αποτελεί καλή πρακτική τα ονόµατα των σταθερών που ορίζονται µε #define να αποτελούνται µόνο από κεφαλαίους χαρακτήρες. - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτική χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. Page 8
1085 συνάρτησης. 1086 1087 1088 1089 1090 1091 1092 1093 1094 - Οι επιπλέον κενές γραµµές στην µορφοποίηση του µηνύµατος προς τον χρήστη είναι περιττές. Είναι χρήσιµο η µορφοποίηση των µηνυµάτων προς τον χρήστη να συµµορφώνεται µε τις αντίστοιχες οδηγίες. - Οι δύο τελευταίες εντολές for στην συνάρτηση find_longest θα µπορούσαν να συµπτυχθούν σε µία εντολή. Αυτή η αλλαγή θα απλοποιούσε την λειτουργία της - Προσοχή στην στοίχιση των εντολών. - Άσχηµη στοίχιση -Στην συνθήκη if ( strlen(wordlist[i]) > maxword ) έπρεπε να έχεις >= και όχι απλά >. Όπως το έχεις βρίσκεις την πρώτη λέξη µε το µεγαλύτερο µήκος και όχι την τελευταία. -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος " the longest word is ". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! -Από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. - Θα ήταν καλό οι µεταβλητές που δηλώνονται καθολικά να έχουν δηλωθεί εντός της συνάρτησης main. - Αποτελεί καλή πρακτική τα ονόµατα των σταθερών που ορίζονται µε #define να αποτελούνται µόνο από κεφαλαίους χαρακτήρες. -Το πρόγραµµα σου δεν κάνει compile. -Πολλά λογικά και συντακτικά λάθη τα οποία αναφέρονται σε ύλη προηγούµενων εργαστηρίων. -Δεν έχεις καταλάβει ποιο είναι το ζητούµενο της άσκησης. Διάβασε καλά την εκφώνηση! Page 9
1095 1096 1097 1098 1099 1100 1101 1102 -Το πρόγραµµά σου δεν κάνει αυτό που ζητάει η εκφώνηση. Όπως το έχεις, η συνάρτηση find_longest τυπώνει την τελευταία λέξη που έχει µεγαλύτερο µήκος από την προηγούµενή της και όχι την τελευταία µεγαλύτερη λέξη. Προσπάθησε να καταλάβεις την διαφορά και να διορθώσεις τον κώδικά σου. -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος "The word with the greatest length is ". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! -Από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Στην συνθήκη if(length[i]>length[i-1] έπρεπε να έχεις >= και όχι απλά >. -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο maxleksi κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. -Η εκφώνηση της άσκησης ζητούσε να εκτυπώνεται µόνο η λέξη που είναι λεξικογραφικά µεγαλύτερη και τίποτα άλλο. Πρέπει να ακολουθείς ακριβώς τις οδηγίες! -Πρόσεχε την στοίχιση! - Δεν καλείς ποτέ τη συνάρτηση find_longest - Η find_longest δεν εκτυπώνει το σωστό αποτέλεσµα - Πρόσεχε τη στοίχιση και τα ονόµατα των µεταβλητών -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος " the longest word is ". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! -Πολύ σωστά τα σχόλιά σου, προσπάθησε να γράφεις και τα pre και post conditions κάθε συνάρτησης και να κάνεις ακόµα πιο ευανάγνωστο τον κώδικά σου. Page 10
1103 1104 1105 1106 πολύ οριακά -Δεν εκτυπώνεις την λέξη που είναι λεξικογραφικά µεγαλύτερη αλλά όλες τις λέξεις που περιέχονται στον πίνακα. -Πολύ άσχηµη στοίχιση. -Πρέπει να κλείνεις ένα } στη στήλη που ξεκινά το αντίστοιχο block -Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDS 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS. Δηλαδή στο πρόγραµµα σου αντί για i<75; θα έπρεπε να είχες γράψει i< NUMWORDS; -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο max κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (π.χ. όχι max). -Στην printf() της find_longest() δεν χρειάζεται να βάλεις "%9s\n". Έτσι εκτυπώνεις πρώτα κενά και µετά την λέξη που είναι λεξικογραφικά µεγαλύτερη! Πρέπει να ακολουθείς ακριβώς τις οδηγίες! - Εκτός από τα γενικά σχόλια για το πρόγραµµά σου στην αρχή του κώδικα είναι σηµαντικό να σχολιάζεις πάνω από κάθε συνάρτηση τι κάνει, αλλά και να εξηγείς τα µη ξεκάθαρα ή δυσνόητα σηµεία του κώδικά σου. -έπρεπε να τυπώσεις µόνο τη µεγαλύτερη λέξη και όχι H megaliteri leksi einai:, γιατί αυτό ζητάει η άσκηση. - Άσχηµη στοίχιση - Η συνάρτηση έπρεπε να βρίσκει την τελευταία λέξη µεγίστου µεγέθους. - Η συνάρτηση έπρεπε να εκτυπώνει σκέτη τη λέξη. -Πολλά λάθη στο compile -strcpy(max,"copy succesfull"); τί ακριβώς πας να κάνεις εδώ? Page 11
1107 1108 1109 1110 1111 1112 1113 1114 -Δεν περνάει το compile, έχεις παρά πολλά λάθη - δεν έχεις καταλάβει πότε χρησιµοποιούµε = και πότε ==. Π.χ. i=5; ( ανάθεση, δηλ. Το i έχει πάρει την τιµή 5) if(i==5) { printf( %d\n, i);} (σύγκριση, είναι το i ίσο µε 5? αν ναι τύπωσε το) - λάθος σύνταξη της if - λάθος σύνταξη όταν υλοποιούµε µια συνάρτηση. Δε βάζουµε ; πριν ανοίξουµε αγκύλες να γράψουµε τον κώδικα της συνάρτησης - έχεις ξεχάσει ερωτηµατικά - έχεις δηλώσει µεταβλητής why τύπου char, και προσπαθείς να την τυπώσεις ώς string. - λάθος αριθµός χαρακτήρων στη scanf, θέλουµε λέξεις µε 9 χαρακτήρες και εσύ διαβάζεις µε 74. - δεν έχεις καταλάβει τους πίνακες - γιατί προσπαθείς να συκρίνεις κάθε λέξη του πίνακα µε τη λέξη why? Αν ξέρεις ότι αυτή είναι η µεγαλύτερη γιατί να µπεις καν στη διαδικασία να γράψεις κώδικα για να τη βρεις, ας έφτιαχνες ένα πρόγραµµα που να τυπώνει απλά το why!!! (Το θέµα έιναι ότι δε ξέρουµε τι λέξεις θα µπουν στον πίνακα για αυτό και φτιάχουµε ένα πρόγραµµα που ανεξάρτητα από το τί λέξεις θα έχουµε ως είσοδο αυτό θα βρίσκει και θα µας τυπώνει τη µεγαλύερη αλφαβητικά) - Ελλειπή σχόλια συναρτήσεων - Πρόσεχε τη στοίχιση - Η συνάρτηση έπρεπε να εκτυπώνει σκέτη τη λέξη. -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (π.χ. όχι str). -Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο µέγεθος µιας λέξης θα γράφεις WORDSIZE. Δηλαδή στο πρόγραµµα σου αντί για str[10]; θα έπρεπε να είχες γράψει str[wordsize];. -Δεν υπάρχουν επαρκή σχόλια! - Απαγορεύεται η χρήση καθολικών µεταβλητών χωρίς σοβαρό λόγο - Ελειπή σχόλια αυναρτήσεων - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται µε τους κανόνες του αντίστοιχου φυλλαδίου. Επί παραδείγµατι, στην ενότητα parameters επεξηγούµε τις παραµέτρους που λαµβάνει η αντίστοιχη συνάρτηση και όχι τις µεταβλητές που δηλώνονται εντός αυτής. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται µε τους κανόνες του αντίστοιχου φυλλαδίου. - Είναι χρήσιµο να υπάρχουν κάποιες κενές γραµµές µεταξύ διαδοχικών ορισµών συναρτήσεων ώστε να διευκολύνεται η ανάγνωση του προγράµµατος. Page 12
-Η εκφώνηση της άσκησης ζητούσε να εκτυπώνεται µόνο η λέξη που είναι λεξικογραφικά µεγαλύτερη και τίποτα άλλο. Πρέπει να ακολουθείς ακριβώς τις οδηγίες! -Να χρησιµοποιείς περιγραφικά ονόµατα σταθερών και πινάκων (π.χ. όχι str, max). -Δεν υπάρχουν επαρκή σχόλια! 1115 - Προσοχή στην µορφοποίηση του µηνύµατος προς τον χρήστη. Αυτό που ζητούνταν ήταν µόνο η εκτύπωση της λέξης µε το µέγιστο µήκος. Είναι χρήσιµο η µορφοποίηση των µηνυµάτων προς τον χρήστη να 1116 συµµορφώνεται µε τις αντίστοιχες οδηγίες. 1117 -Ο κώδικάς σου είναι σωστός εκτός από την εντολή printf στην συνάρτηση find_longest. Έπρεπε να τυπώσεις το wordlist[max_thesi] και όχι το wordlist[i]. Πρόσεξε γιατί τέτοιες λεπτοµέρειες κάνουν όλο το πρόγραµµά σου να φαίνεται λάθος χωρίς να είναι. Επιπλέον, η µεταβλητή i εκείνη την στιγµή έχει την τιµή 75, άρα προσπελαύνεις µια θέση εκτός πίνακα... -Πολύ σωστά τα σχόλια που έβαλες αλλά προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf.είναι πολύ 1118 σηµαντικά για την κατανόηση ενός προγράµµατος. 1119 1120 1121 1122 -Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο µέγεθος µιας λέξης θα γράφεις WORDSIZE. Δηλαδή στο πρόγραµµα σου αντί για maxleksi [10]; θα έπρεπε να είχες γράψει maxleksi [WORDSIZE];. -Πρόσεχε πως καλείς τις συναρτήσεις σου µέσα στην main() (µην αφήνεις κενά). -Δεν υπάρχουν επαρκή σχόλια! - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτικ χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. - Αρκετή προσοχή στην στοίχιση των εντολών. Επίσης, οι αγκύλες '}' πρέπει να βρίσκονται στην ίδια στήλη µε την εντολή που ''κλείνουν''. Page 13
1123 1124 1125 1126 1127 1128 -όταν υλοποιήσεις µια συνάρηση να σχολιάζεις από πάνω τι κάνει η συνάρτησή σου. -σχόλια τύπου δήλωση µεταβλητών, κλήση συναρτήσεων είναι περιττά - Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές grames 75 και stiles 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις grames. Δηλαδή στο πρόγραµµα σου αντί για i<=74; θα έπρεπε να είχες γράψει i<=grames -1; Ή i<grames;. -Να χρησιµοποιείς περιγραφικά ονόµατα σταθερών (π.χ. όχι grames, stiles) και πινάκων (π.χ. όχι max) -Μόνο όταν διαβάζουµε έναν χαρακτήρα από το πληκτρολόγιο αφήνουµε ένα κενό ανάµεσα από τα " και από το %, δηλ. scanf (" %c", &a). -Δεν υπάρχουν επαρκή σχόλια! -Πρόσεχε πολύ την στοίχιση! -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο max κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (π.χ. όχι max). -Πρόσεχε πως καλείς τις συναρτήσεις σου µέσα στην main() (µην αφήνεις κενά). -Δεν υπάρχουν επαρκή σχόλια! - Προσοχή στην µορφοποίηση του µηνύµατος προς τον χρήστη. Αυτό που ζητούνταν ήταν µόνο η εκτύπωση της λέξης µε το µέγιστο µήκος. Είναι χρήσιµο η µορφοποίηση των µηνυµάτων προς τον χρήστη να συµµορφώνεται µε τις αντίστοιχες οδηγίες. -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. Page 14
1131 1132 1133 1134 1135 1136 1137 1138 -Πολύ σωστά τα σχόλιά σου πριν τις συναρτήσεις, προσπάθησε όµως να γράφεις και τα pre και post conditions κάθε συνάρτησης και να κάνεις ακόµα πιο ευανάγνωστο τον κώδικά σου. Διάβασε ξανά το φυλλάδιο commenting_standard.pdf. -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος "i leksi me to megalitero megethos einai i". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να 1129 υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! 1130 ενθουσιαστικά -Πρόσεχε πολύ την στοίχιση! -Δεν υπάρχουν επαρκή σχόλια! - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτική χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. - Οι δύο συνθήκες στην εντολή if της συνάρτησης find_longest θα µπορούσαν να συµπτυχθούν σε µία, όπου θα γινόταν έλεγχος βάσει του τελεστή >=. - Προσοχή στην µορφοποίηση του µηνύµατος προς τον χρήστη. Αυτό που ζητούνταν, ήταν µόνο η εκτύπωση της λέξης µε το µέγιστο µήκος. Είναι χρήσιµο η µορφοποίηση των µηνυµάτων προς τον χρήστη να συµµορφώνεται µε τις αντίστοιχες οδηγίες. - Προσοχή στην στοίχιση των εντολών. Επίσης, οι αγκύλες '}' πρέπει να βρίσκονται στην ίδια στήλη µε την εντολή που ''κλείνουν''. πολύ οριακά -Δεν εκτυπώνεις την λέξη που είναι λεξικογραφικά µεγαλύτερη. Η printf() έπρεπε να ήταν έξω από την for()! -Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS. Δηλαδή στο πρόγραµµα σου αντί για i<75; θα έπρεπε να είχες γράψει i<numwords; -Πρόσεχε πως δηλώνεις τα πρωτότυπα των συναρτήσεων σου (µην αφήνεις κενά). -Πρόσεχε πολύ την στοίχιση! -Δε περνάει από compile. - Δεν έχεις υλοποιήσει τη find_longest Page 15
1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 - Πρόσεχε λίγο τη στοίχιση -Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS. Δηλαδή στο πρόγραµµα σου αντί για i<=74; θα έπρεπε να είχες γράψει i<= NUMWORDS -1; Ή i< NUMWORDS;. -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (π.χ. όχι max) -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο max κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. Η σταθερά για το µέγεθος της λέξης είναι ίση µε 9 ενώ θα επρεπε να είναι ίση µε 10, 9 χαρακτήρες για τη λέξη και έναν για το \0. -Εφόσον δηλώνεις την σταθερά AR_LEKSEWN=75 θα έπρεπε και να τη χρησιµοποιείς παντού και να µην γράφεις 75. -Πολύ σωστά τα σχόλιά σου πριν τις συναρτήσεις, προσπάθησε όµως να γράφεις και τα pre και post conditions κάθε συνάρτησης και να κάνεις ακόµα πιο ευανάγνωστο τον κώδικά σου. Διάβασε ξανά το φυλλάδιο commenting_standard.pdf. -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος "The longest word is:". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! -Πρόσεξε την στοίχισή σου!!!! -Πρόσεχε την στοίχιση! -Πρέπει να κλείνεις ένα } στη στήλη που ξεκινά το αντίστοιχο block -Πολύ σωστά τα σχόλια που έβαλες αλλά προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. - Πρόσεχε τη στοίχιση Page 16
1150 1151 1152 1153 1154 1155 1156 1157 1158 - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται µε τους κανόνες του αντίστοιχου φυλλαδίου. - Προσοχή στην στοίχιση των εντολών. Επίσης, οι αγκύλες '}' πρέπει να βρίσκονται στην ίδια στήλη µε την εντολή που ''κλείνουν''. -Δεν δηλώνεις σωστά τα πρωτότυπα των συναρτήσεων. Διάβασε καλά την θεωρία! - Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS και όχι 75. - Προσοχή στην µορφοποίηση του µηνύµατος προς τον χρήστη. Αυτό που ζητούνταν ήταν µόνο η εκτύπωση της λέξης µε το µέγιστο µήκος. Είναι χρήσιµο η µορφοποίηση των µηνυµάτων προς τον χρήστη να συµµορφώνεται µε τις αντίστοιχες οδηγίες. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται µε τους κανόνες του αντίστοιχου φυλλαδίου. - Προσοχή στην µορφοποίηση του µηνύµατος προς τον χρήστη. Αυτό που ζητούνταν ήταν µόνο η εκτύπωση της λέξης µε το µέγιστο µήκος και όχι η γραµµή του αρχείου στην οποία αυτή βρίσκεται. Είναι χρήσιµο η µορφοποίηση των µηνυµάτων προς τον χρήστη να συµµορφώνεται µε τις αντίστοιχες οδηγίες. - Προσοχή στην στοίχιση των εντολών. Οι αγκύλες '}' πρέπει να βρίσκονται στην ίδια στήλη µε την εντολή που ''κλείνουν''. - Είναι χρήσιµο να υπάρχουν κάποιες κενές γραµµές µεταξύ διαδοχικών ορισµών συναρτήσεων ώστε να διευκολύνεται η ανάγνωση του προγράµµατος. -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Το πρόγραµµά σου δεν κάνει compile. -Διάβασε καλά την θεωρία για τον τρόπο δήλωσης µιας συναρτησης καθώς και για τον τρόπο χρήσης. Η σύνταξή σου και το σηµείο τοποθέτησης δεν είναι καθόλου σωστά. -Πρόσεξε την στοίχισή σου!!!! -Αν διαβάσεις λίγο παραπάνω θα τα καταφέρεις καλύτερα στο επόµενο εργαστήριο. Page 17
1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται µε τους κανόνες του αντίστοιχου φυλλαδίου. Επί παραδείγµατι, ως preconditions αναφέρουµε τις διάφορες υποθέσεις που έχουµε κάνει όσον αφορά στην λειτουργία της αντίστοιχη συνάρτησης και όχι το αποτέλεσµα που αυτή επιστρέφει. - έχεις warning στο if(x=0) που θα έπερεπε να είναι if(x==0). Είναι σηµαντικό λάθος και το πρόγραµµα σου εντέλει τρέχει σωστά επειδή αν δύο λέξεις είναι ίδιες δεν µας επηρεάζει να αλλάξει ή να µην αλλάξει η ανάθεση στο max. - δεν υπάρχει λόγος να αντιγράφεις ένα string στον εαυτό του. Οι συγκρίσεις για x<0 και χ==0 είναι περιττές - λάθος αριθµός χαρακτήρων στη scanf, θέλουµε λέξεις µε 9 χαρακτήρες και εσύ διαβάζεις µε 74. - Να χρησιµοποιείς τις σταθερές αντί για τιµές µέσα στο πρόγραµµά σου όποτε χρειάζεται -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Η άσκηση ζητάει την εκτύπωση µόνο της λέξης και όχι την πρόσθετη εκτύπωση του µηνύµατος "The word with the biggest length is:". Πρόσεξε λίγο καλύτερα την εκφώνηση, είναι αρκετά σηµαντικό να υλοποιείς αυτό που πραγµατικά σου ζητείται και όχι αυτό που θέλεις εσύ! - Δεν καλείς ποτέ τη συνάρτηση find_longest - Πρόσεχε τη στοίχιση - Δεν υπολογίζει τη θέση στην οποία βρίσκεται η λέξη µε το µεγαλύτερο µήκος - Μη χρησιµοποιείς \n στη scanf - Δεν υπάρχουν σχόλια. Page 18
1172 1173 1174 1175 1176 1177 1178 1179 1180 -Ουσιαστικά κάνεις σύγκριση χαρακτήρων και όχι συµβολοσειρών. Το αποτέλεσµα είναι ένας παράξενος συνδυασµός των µεγαλύτερων γραµµάτων και όχι η µεγαλύτερη λέξη! -Εφόσον δηλώνεις τις σταθερές numwords=75 και wordsize=10 θα έπρεπε και να τις χρησιµοποιείς και να µην γράφεις 74 και 9. -Εφόσον δηλώνεις την βιβλιοθήκη <string.h> θα έπρεπε να χρησιµοποιείς κάποια συνάρτησή της. -Η συµβολοσειρά maxword είανι ελλειπής γιατί δεν βάζεις στην τελευταία της θέση τον χαρακτήρα '\0'. Αυτός είναι ο λόγος που τυπώνονται αυτά τα παράξενα σύµβολα! -Αντί για την printf("%c", maxword[i]); µπορούσες να γράψεις printf("%s", maxword); -Από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. - Η συνάρτηση έπρεπε να εκτυπώνει σκέτη τη λέξη. -Δεν υλοποίησες σχεδόν καθόλου την συνάρτηση find_longest. Επιπλέον, δεν την καλείς πουθενά. -Από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf. Είναι πολύ σηµαντικά για την κατανόηση ενός προγράµµατος. -Πρόσεξε την στοίχισή σου!!!! -Εφόσον δηλώνεις τις σταθερές numwords=75 και wordsize=10 θα έπρεπε και να τις χρησιµοποιείς και να µην γράφεις 74 και 9 ή 10. -Η συνάρτηση read_words πάντως είναι σωστή, εποµένως αν διαβάσεις παραπάνω θα τα καταφέρεις καλύτερα στο επόµενο εργαστήριο. - Το κενό µεταξύ του χαρακτήρα '' και του χαρακτήρα % στην εντολή scanf δεν είναι απαραίτητο. - Από την στιγµή που στην αρχή του προγράµµατος σου δηλώνεις τις σταθερές NUMWORDS 75 και WORDSIZE 10, στην συνέχεια όταν θα θέλεις να αναφερθείς π.χ. στο πλήθος των λέξεων θα γράφεις NUMWORDS. Δηλαδή στο πρόγραµµα σου αντί για i<=74; θα έπρεπε να είχες γράψει i<= NUMWORDS -1; Ή i< NUMWORDS;. -Να χρησιµοποιείς περιγραφικά ονόµατα πινάκων (π.χ. όχι max) -Δεν υπάρχουν επαρκή σχόλια! Page 19
1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 - Είναι χρήσιµο τα ονόµατα των σταθερών να είναι σε συµφωνία µε την ποσότητα που αναπαριστούν. Έτσι, οι σταθερές NUMWORDS και WORDSIZE θα έπρεπε να έχουν τιµές 75 και 10 αντίστοιχα. - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτική χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. -H scanf() δεν συντάσσεται έτσι! Ποτέ δεν βάζουµε \n µέσα στην scanf(). -Να χρησιµοποιείς περιγραφικά ονόµατα σταθερών και πινάκων (π.χ. όχι max). -Μέσα στην for() της συνάρτησης find_longest() θα έπρεπε να βάλεις i=1; και όχι i=0;, αφού ήδη στο max κρατάς την πρώτη λέξη του πίνακα ο έλεγχος θα πρέπει να ξεκινά από την δεύτερη λέξη! Ξεκινώντας τον έλεγχο από την δεύτερη λέξη µειώνεις τον υπολογιστικό φόρτο του συστήµατος. -Πρόσεχε πολύ την στοίχιση της συνάρτησης find_longest()! - Εκτός από τα γενικά σχόλια για το πρόγραµµά σου στην αρχή του κώδικα είναι σηµαντικό να σχολιάζεις πάνω από κάθε συνάρτηση τι κάνει, αλλά και να εξηγείς τα µη ξεκάθαρα ή δυσνόητα σηµεία του κώδικά σου. -Ο κώδικάς σου είναι άψογος! Τα σχόλιά σου είναι πολύ σωστά και κατανοητά! Συνέχισε έτσι! - Εφόσον ο αριθµός των λέξεων έχει δηλωθεί ως σταθερά, αποτελεί καλή πρακτικ χρησιµοποιείται η σταθερά και όχι η τιµή αυτής όπου είναι απαραίτητο, ώστε να διευκολύνονται µελλοντικές επεκτάσεις. Page 20