lab4grades Παρακαλούµε µη γράφετε σχόλια στα ελληνικά!

Σχετικά έγγραφα
lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

ΑΕΜ ή username. Sheet2

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

lab6grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Διαδικαστικά: Όλα οκ.

lab4grades Παράδοση ασκήσεων: -Όλα καλά Άσκηση 1η: -Σωστή 357 PASS

Βαθμός Σχόλιο. lab3_grades

lab2grades - Στη scanf υπολογίζετε τουλάχιστον 5 χαρακτήρες %5.2f προδιαγραφές που ζητούνται στην εκφώνηση. -

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

lab3grades - Δεν παραδόθηκε. - Προσπαθήστε να κάνετε την άσκηση στο σπίτι.

- Σωστή χρήση του προσδιοριστή const για την σταθερά pi. Καλό θα ήταν επιλέξετε κεφαλαία γράµµατα για το όνοµα της σταθεράς.

lab5grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ ΑΣΚΗΣΗΣ ΑΛΛΑ ΣΧΟΛΙΑ

lab6grades - Δεν έχετε δηλώσει το βαθµό βάσης ως σταθερά. - Το µήνυµα εισόδου θέλει χαρακτήρα κενού ' ' στο τέλος και όχι TAB '\t'.

Sheet3_2. Τα literals (3.0, 1.5, κτλ) πρέπει να ορίζονται ως σταθερές.

Τα ονόµατα των φακέλων πρέπει να έχουν το επίθετά σας και όχι τα username που χρησιµοποιείτε στα εργαστήρια.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

lab2grades printf("calculus: %.4lf\n", calculus);

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων

lab7grades -Σωστή χρήση της sprintf -Σωστά ανιχνεύετε τον χαρακτήρα που πρέπει να αφαιρέσετε. -Σωστή µεταφορά στοιχείων µια θέση αριστερά.

lab5 -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο

lab7 PASS -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. PASS -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου!

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h

lab9grades Άσκηση 1 - Σωστοί τύποι (παραµέτρων και επιστρεφόµενης τιµής) της series_cosh.

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1

Λύσεις για τις ασκήσεις του lab5

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

FAIL PASS PASS οριακά

lab5grades Διαδικαστικά: όλα οκ, αλλά καθυστερήσατε στην αποστολή. Να προσέχετε να στέλνετε τις ασκήσεις σας εντός της προθεσµίας.

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Δεν έστειλες την άσκηση 1, και αυτό που έστειλες ήταν σκέτο αρχείο, όχι το tgz που ζητούσε η εκφώνηση.

CE 120. Φροντιστήριο 14/10/2011

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

lab14grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση.

for for for for( . */

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

scanf() scanf() stdin scanf() printf() int float double %lf float

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

lab3_all Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

οριακό PASS 402 PASS Πολύ σωστά, µπράβο οριακό PASS

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

Sheet1_2. - Δεν υπάρχουν σχόλια συναρτήσεων - Να χρησιµοποιείς πιο περιγραφικά ονόµατα µεταβλητών (και σίγουρα όχι απλούς χαρακτήρες όπως c, d) Page 1

-Δεν έχεις σχόλια, καλό θα ήταν να έχεις πιο περιγραφικό σχόλιο στην αρχή

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/10, 23:59

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

lab3grades οριακό PASS

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 10/11/2015, 22:00

επιµέλεια Θοδωρής Πιερράτος

lab9grades -Έπρεπε να χρησιµοποιήσεις την sprintf για το formatting των strings.

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Η γλώσσα προγραμματισμού C

Sheet PASS 1426 PASS 1428 PASS. Page 1

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Γλώσσα Προγραμματισμού C

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Παράδοση άσκησης: οκ, αλλά προσέξτε τις νέες οδηγίες για την ονοµασία του φακέλου.

lab11 - Να εκτυπώνεις πιο κατατοπιστικά µηνύµατα λάθους. Αν είναι όλα ίδια, δεν είναι ξεκάθαρο ποιο αρχείο έχει πρόβληµα.

lab10grades - Το αποτέλεσµα της τοµής θα έπρεπε να εµφανίζετε µέσα σε εισαγωγικά "Helo".

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ. οριακό PASS

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 3/12/2018, 23:59

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 4/11/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

Εισαγωγή στον Προγραμματισμό

Διαδικασιακός Προγραμματισμός

Άσκηση 2: -Δεν παραδόθηκε. Το εµαιλ είχε λάθος θέµα. Έπρεπε να είναι CE120 lab6

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

- Ο τελευταίος έλεγχος στη συνάρτηση είναι περιττός. Αν έχει φτάσει µέχρι εκεί το πρόγραµµα, τότε αναγκαστικά το µήκος είναι >= του PASSWD_MIN_LEN.

Προγραμματιστικό Περιβάλλον

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 321 FAIL

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 10/11/12, 22:00

ΗΥ-150. Προγραμματισμός

Επεξεργασία Αρχείων Κειµένου

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

to post PASS PASS FAIL

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

ΗΥ-150. Προγραμματισμός

Transcript:

02103 - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Λάθος χρήση της scanf. Το γεγονός ότι η scanf είναι αρκετά "έξυπνη" δεν σηµαίνει ότι το µοτίβο που χρησιµοποιήσατε είναι σωστό. Έπρεπε να χρησιµοποιήσετε "%c%d-%c%d", το ότι δουλεύει το πρόγραµµα µας είναι ένα τυχαίο συµβάν εξαρτώµενο 02104 από την έκδοση του compiler και την υλοποίηση της βιβλιοθήκης scanf! - Έλλειψη αρχικών σχόλιων. Παρακαλούµε µη γράφετε σχόλια στα ελληνικά! - Θα έπρεπε να ελεγχέτε την ορθότητα της σειράς πριν το κωδικό - Θα έπρεπε να χρησιµοποιήσετε %02d στην εκτύπωση του µήνα και της ηµέρας. - Σωστή χρήση του fall-through effect της switch. - Λάθος συνθήκες στις if µε αποτέλεσµα το Β' Μέρος της άσκησης να είναι λάθος. 02105 FAIL Δεν µεταγλωττίζεται και γενικά έχει πολλά προβλήµατα Λάθος όνοµα φακέλου/tgz. Μόνο το επώνυµο και το ΑΕΜ θελουµε 02106 - Ήταν το 4ο σε σειρά εργαστήριο και έχετε λάθος στοίχιση! Διαβάστε οπωσδήποτε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που βρίσκεται στην σελίδα του µαθήµατος. - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Ο κενός χαρακτήρας µπρόστα απο το µοτίβο της scanf δεν είναι απαραίτητος. Διαβάστε πάλι από τις διαλέξεις την εντολή scanf και πότε χρησιµοποιείται ο κενός χαρακτήρας. - Μεταβλητές i,j,k... χρησιµοποιούνται καθαρά και indexing λόγους µιας επανάληψης και όχι για- τον έλεγχο ροής του προγράµµατος! - Ολοκληρωτική έλλειψη σχολίων. - Θα έπρεπε να ελεγχέτε την ορθότητα της σειράς πριν το κωδικό - Θα έπρεπε να χρησιµοποιήσετε %02d στην εκτύπωση του µήνα και της ηµέρας. - Σωστή χρήση του fall-through effect της switch. - Σωστές συνθήκες στις if. -Σωστή στοίχιση -Δεν έχετε καθόλου σχόλια στο πρόγραµµάς σας. -Τα ονόµατα των σταθερών έπρεπε να είναι µε ΚΕΦΑΛΑΙΑ. -Επίσης µπορούσατε να δηλώνατε και τους χαρακτήρες σα -Σωστοί τύποι και ονόµατα µεταβλητών -Σωστή χρήση if/else - Σωστή switch, απλά να βάζετε τα break σε -Το letter - min - 1<13 δεν είναι πολύ κατανοητό ούτε το ξεχωριστή γραµµή. letter - min +1-13, δείτε τις λύσεις στη σελίδα του µαθήµατος για το πως έπρεπε να γίνει η αριθµητική χαρακτήρων έτσι ώστε να είναι ποιο έυκολη και κατανοητή όταν διαβάζεις τον κώδικα. -Στις cases που εκτελούν ίδιο κώδικα µπορούσατε να µην βάλετε 2 φορές τα ίδια printf αλλά µια φορά στο τέλος και χωρίς break ανάµεσά τους. Δείτε τη λύση στη σελίδα του µαθήµατος να καταλάβετε καλύτερα πως. - Καλά σχόλια, αλλά µην τα βάζετε µετά από τον κώδικα που σχολιάζουν. Πρέπει να είναι πριν. - Σωστή στοίχιση, αλλά προσέξτε τις κενές γραµµές. Τις χρησιµοποιούµε για να χωρίσουµε διαφορετικές ενότητες του προγράµµατος, όχι τυχαία. Εποµένως δε βάζουµε κενή γραµµή 02107 πριν το else, γιατί ανήκει στην ίδια "ενότητα" µε το if. Επίσης δεν - Σωστή και καλογραµµένη, µπράβο. αφήνουµε περισσότερες από µια διαδοχικές κενές γραµµές. - Σωστή χρήση if/else - Δε χρησιµοποιείτε καθόλου Το απαιτούσε ρητά η εκφώνηση. - Καλό είναι τις µεταβλητές να τις δηλώνετε όλες στην αρχή της συνάρτησης, κι όχι ενδιάµεσα. Και στο προηγούµενο εργαστήριο είχατε θέµα µε τις σταθερές, τα σχόλια και την διαφοροποίηση των µηνυµάτων εξόδου απο τα ζητούµενα. Στο επόµενο εργαστήριο φροντίστε να διαβάσετε πολύ καλά την εκφώνηση και να εξαλείψετε τα κατα σειρά εργαστηρίων λάθη σας. Page 1

02109 02111 - Ήταν το 4ο σε σειρά εργαστήριο και έχετε λάθος στοίχιση! Διαβάστε οπωσδήποτε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που βρίσκεται στην σελίδα του µαθήµατος. - Τα όνοµατα τον µεταβλητών πρέπει να είναι περιεκτικά και συνοπτικά στο τι αντιπροσωπεύει η µεταβλητή π.χ. ονόµατα σαν και το month_2 δεν ικανοποιούν τα προαναφερθέντα κριτήρια. - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Λάθος χρήση της scanf. Το γεγονός ότι η scanf είναι αρκετά "έξυπνη" δεν σηµαίνει ότι το µοτίβο που χρησιµοποιήσατε είναι σωστό. Έπρεπε να χρησιµοποιήσετε "%c%d-%c%d", το ότι δουλεύει το πρόγραµµα µας είναι ένα τυχαίο συµβάν εξαρτώµενο από την έκδοση του compiler και την υλοποίηση της βιβλιοθήκης scanf! - Τα αρχικά σχόλια τα γράφουµε πάνω από την main. - Σωστή σειρά ελέγχου ορθότητας αριθµού σειράς και κωδικού - Θα έπρεπε να χρησιµοποιήσετε %02d στην εκτύπωση του µήνα και της ηµέρας. - Σωστή χρήση του fall-through effect της switch. - Σωστές συνθήκες στις if. - Πολύπλοκη χρήση των ελέγχων if µε αποτέλεσµα το πρόγραµµα από άποψη δοµής να γίνεται δυσνόητο. Θα µπορούσατε να ελέγχετε απευθέιας για την απαγορευτική συνθήκη και να κάνετε αµέσως return. Έτσι δεν θα χρειαζόταν ο υπόλοιπος κώδικας να µπει µέσα σε κάποια if. -Σωστή στοίχιση -Τις σταθερές τις δηλώνουµε µε ΚΕΦΑΛΑΙΑ - Σωστή ονοµατολογία σταθερών. - Σωστή χρήση της scanf. - Σωστές συνθήκες στις if - Σωστή χρήση της fall-through effect της switch - Μη γράφετε τεράστια σχόλια σε µια γραµµή γιατί κάνουν wrap around και τελικά ο κώδικας δε διαβάζεται. Αν έχετε πολλά σχόλια, γράψτε τα σε µορφή παραγράφου. - Οµοίως, µη γράφετε τεράστιες γραµµές κώδικα. Οι δηλώσεις των σταθερών µπορούσαν να έχουν σπάσει στα δύο. - Ελάχιστα σχόλια - Σωστή χρήση και ονοµασία σταθερών, µπράβο. - Δε διαβάζετε την επιλογή του χρήστη από το - Σωστή στοίχιση, εκτός του } της switch που έπρεπε να ήταν πιο πληκτρολόγιο! 02112 δεξιά. Επίσης, καλό είναι να αφήνετε κενή γραµµή µετά το - Σωστή η switch που γράψατε, εκτός από τη - Καλή δουλειά #include. Τέλος, µην αφήνετε περισσότερες από µια διαδοχικές στοίχιση. Μη βάζετε περισσότερες από µία εντολές κενές γραµµές. ανά γραµµή. - Σωστές πράξεις 02113 - Σωστά οι σταθερές έχουν κεφαλαία - Σωστή χρήση της switch. - Σωστή χρήση της αριθµητικής χαρακτήρων. - Διαβάσατε τι είπαµε για τις σταθερές στα σχόλια του lab3? - Κακή στοίχιση στις if/else. Διαβάστε το φυλλάδιο "Αρχές καλού 02115 προγραµµατισµού" που είναι στη σελίδα του µαθήµατος. - Δεν έγινε, πέρα από τις printf. - Το πρόγραµµά σας έχει διαφορετική έξοδο. Έχετε ξεχάσει το αρχικό µήνυµα! - Να διαβάζετε προσεκτικά τα σχόλια που σας γράφουµε σε κάθε εργαστήριο και να µην ξανακάνετε τα ίδια λάθη. - Πολύ καλά σχόλια, µπράβο. Προσέξτε µόνο να µην επεκτείνετε τα σχόλια ή τον κώδικα πολύ δεξιά στο παράθυρο γιατί κάνουν wrap around και δε φαίνεται καλά ο κώδικας. Για παράδειγµα, το σχόλιο της switch µπορούσατε να το είχατε γράψει πριν τη switch. Το ίδιο σχόλιο έχει το πρόβληµα ότι ξεκινά ΠΟΛΥ µακριά στη 02116 γραµµή από εκεί που τελειώνει ο κώδικας. Γενικά, τα σχόλια τα - Σωστή switch, αλλά έχει κακή στοίχιση. Μη γράφουµε πιο κοντά στον κώδικα που σχολιάζουν. γράφετε περισσότερες από µία εντολές ανά - Σωστή χρήση σταθερών αλλά τα ονόµατά τους τα γράφουµε γραµµή. κατά σύµβαση µε όλο κεφαλαία - Καλή δουλειά - Καλή στοίχιση. Μόνο το } της switch έπρεπε να ήταν ένα tab πιο αριστερά και το τελευταίο printf να είναι στην επόµενη γραµµή. - Μην αφήνετε τεράστια κενά στον κώδικα. Οι γραµµές 53-62 δεν έπρεπε να είναι κενές. - Καλά ονόµατα µεταβλητών 02117 - Γενικά καλή δουλειά. - Τα σχόλιά σας θα µπορούσαν να είναι πιο περιγραφικά. - Τα ονόµατα των µεταβλητών είναι περιγραφικά. - Πολύ καλός ο ορισµός των σταθερών σας. - Ο κώδικας έχει καλή στοίχιση αλλά από την γραµµή 25 έως 36 έχετε µπει δύο tab µέσα αντί για ένα. Επίσης στο τέλος του κώδικα το return έπρεπε να είναι ένα tab µέσα. - Σωστά τοποθετήσατε τα break στο switch-case. - Στην περίπτωση λάθος εισόδου, καλό είναι η return να έχει σαν - Στα case έχετε βάλει τρία tab αντί για ένα. όρισµα οτιδήποτε άλλο εκτός από µηδέν. Κατά σύµβαση χρησιµοποιούµε το return(0); όταν η εκτέλεση φτάσει στο τέλος της χωρίς κανένα invalid input. - Η έξοδος του προγράµµατος είναι σχεδόν σωστή καθώς έχετε ξεχάσει να εισάγετε ένα κενό µετά την άνω-κάτω τελεία στην είσοδο του χρήστη. - Να γράφετε πιο περιγραφικά σχόλια. - Να είστε συνεπείς στην έξοδό σας. Να κοιτάτε τα σχόλια από το προηγούµενο εργαστήριο ώστε να βελτιωθείτε. Page 2

02118 - Μέτρια στοίχιση. Έχετε κενά σε σηµεία που δεν πρέπει. Για παράδειγµα, το int main πρέπει να ξεκινά από την αρχή της γραµµή, όχι ένα κενό πιο µέσα. Κατά τα άλλα, η στοίχιση των if είναι σωστή. - Δε χρησιµοποιείτε καθόλου Ήταν απαίτηση της - Προβληµατική χρήση getchar. Στο drink άσκησης! αποθηκεύεται το enter από την προηγούµενη - Λάθος ανάγνωση του αριθµού. Δεν υπάρχει καµία εγγύηση ότι ανάγνωση. θα έχει ακριβώς τέσσερα ψηφία. Αν ήταν αρνητικός τι θα κάνατε? - Σωστή switch, αλλά έχει κακή στοίχιση. Μη - Λάθος υπολογισµοί! Το row είναι seat/30 και το pos είναι seat γράφετε περισσότερες από µία εντολές ανά %30. Σας είπαµε να ελέγξετε την ορθότητα του προγράµµατός γραµµή. σας χρησιµοποιώντας τα παραδείγµατα της εκφώνησης. Γιατί δεν το κάνατε? - Δεν υπολογίσατε τη θύρα (µετατροπή χαρακτήρα σε ακέραιο µε αριθµητική χαρακτήρων) - Σωστή χρήση if/else - Σωστή αποστολή, αλλά να προσέχετε το θέµα. Είστε στο τµήµα 2! - Κάνετε αρκετά λάθη σε σηµεία που δε θα έπρεπε (σχόλια, σταθερές, πράξεις). - Κάντε ΕΞΑΣΚΗΣΗ στο να λύνετε ασκήσεις πριν έρθετε στο επόµενο εργαστήριο και να διαβάζετε ΠΡΟΣΕΚΤΙΚΑ τις εκφωνήσεις. 02119 - Τα σχόλια τα γράφουµε για να βλέπετε τα λάθη σας και να τα διορθώνετε. Σωστά χρησιµοποιήσατε σταθερές αλλά όπως και στο προηγούµενο εργαστήριο, δεν είναι µε κεφαλαία -Τα ονόµατα και οι τύποι των µεταβλητών είναι σωστά και αρκετά περιγραφικά. - Σωστά έχετε βάλει έλεγχο για τις σωστέ τιµές εισόδου που σας δίνει ο χρήστης. Σωστά τερµατίζετε το πρόγραµµα σε περίπτωση λάθος τιµής. - Οι πράξεις που έχετε κάνει είναι σωστές για την εύρεση της θέσης. - Η έξοδος έχει το σωστό format. - Η στοίχιση σας είναι πολύ σωστή. - Σωστή η χρήση switch. Κάτι το οποίο θα µπορούσατε να κάνετε είναι να εκµεταλλευτείτε το γεγονός οτι κάποια cases αντιστοιχούν σε ίδια εκτέλεση κώδικα. Σε αυτή την περίπτωση µπορείτε να δηλώσετε τα cases µε τη σειρά χωρίς να βάλετε κώδικα ή break, και να βάλετε πράξεις µόνο στο τελευταίο case. Για παράδειγµα: case 'T' : case 'S' : case 'L' : printf("event: Ballet - Swan Lake, Tchaikovsky\n"); break; - Δεν παραδώσατε µέρος Β' 02121 - Σωστή στοίχιση - Σωστή ονοµατολογία µεταβλητών. - Σωστή ονοµατολογία σταθερών. - Σωστή χρήση της scanf. - Σωστές συνθήκες στις if - Σωστή χρήση της fall-through effect της switch. Τα { ; } δεν χρειαζόταν στα κοινά cases που είναι "κενά" - Το break είναι ξεχωριστή εντολή, εποµένως πάει σε νέα γραµµή. 02122 - Δεν έχετε χρησιµοποιήσει - Σωστή χρήση της if/else και σωστά κάνετε return, αλλά στο µήνα δεν έπρεπε να τσεκάρετε µε 1 και 12, αλλά µε 'Α' και 'L'. - Σωστή χρήση της switch. - Δε χρησιµοποείτε αριθµητική χαρακτήρων. Επίσης - Δεν έχετε αρχικό σχόλιο. 02123 - Δεν έχετε δηλώσει όλες τις σταθερές στο πρόγραµµά σας παρά µόνο των αριθµό θέσεων ανά σειρά. - Σωστή συνθήκη ελεχου για τον αριθµό θέσης. - Σωστή χρήση switch. Τα cases στα οποία δεν εκτελείται κώδικας δεν χρειάζονται άγκιστρα '{}'. Αφήνετέ τα απλά κενά. - Σωστός υπολογισµός της σειράς και της θέσης. - Αποφεύγετε τα περιττά κενά µεταξύ των τελεστών ανάγνωσης εντός της scanf() όταν δεν είναι απαραίτητα. - Η στοίχιση της εντολής switch δεν είναι σωστή. Αποφεύγετε να - Σωστές συνθήκες ελέγχου για την ηµεροµηνία. - Σωστός υπολογισµός του αριθµού του µήνα µε τη χρήση αριθµητικής χαρακτήρων. - Στο µήνυµα εκτύπωσης της ηµεροµηνίας βάζετε πάνω από µία εντολές σε µία γραµµή, καθώς αυτό µειώνει υπάρχουν δύο χαρακτήρες κενού ' ' εκατέρωθεν την αναγνωσιµότητα του κώδικα. Επίσης η γραµµή 21 όπου της πρώτης τελείας µετά το έτος, οι οποίοι δεν 'κλείνει' η εντολή switch πρέπει να βρίσκεται στο ίδιο βάθος χρειάζονται. στοίχισης µε αυτό της γραµµής 12, όπου αυτή 'ανοίγει'. - Στο µήνυµα "Invallid event!", το "invallid" γράφεται µε ένα 'l'. - Στο µήνυµα της ηµεροµηνίας, η ηµέρα πρέπει και αυτή να τυπώνεται πάντα µε 2 ψηφία, µε τον ίδιο τρόπο που εκτυπώνετε και τον µήνα. - Καθόλου σχόλια! - Σωστοί τύποι µεταβλητών και σταθερών. - Τα ονόµατα των σταθερών κατά σύµβαση γράφονται µε ΚΕΦΑΛΑΙΑ. Αυτό σας έχει επισηµανθεί και στο προηγούµενο εργαστήριο. - Σωστή στοίχιση, εκτός της εντολής switch. - Στην εντολή if-else, εάν η συνθήκη είναι αληθής (µη έγκυρη είσοδος) το πρόγραµµα τερµατίζει. Αυτό σηµαίνει πως το else µπορεί να αποφευχθεί, τοποθεντώντας τις εντολές µέσα σε αυτό κατευθείαν µέσα στη main(). Όποτε αυτό είναι δυνατόν να το προτιµάτε, µε αυτόν τον τρόπο µειώνεται το βάθος της στοίχισης, διευκολύνοντας έτσι την ανάγνωση του κώδικα. Αυτή η τεχνική ονοµάζεται 'early return' και χρησιµοποιείται κατά κόρον. 02124 - Δεν έχετε χρησιµοποιήσει - Σωστή χρήση της if/else και σωστά κάνετε return, αλλά στο µήνα δεν έπρεπε να τσεκάρετε µε 1 και 12, αλλά µε 'Α' και 'L'. - Σωστή χρήση της switch. - Δε χρησιµοποείτε αριθµητική χαρακτήρων. Επίσης - Δεν έχετε αρχικό σχόλιο. 02125 FAIL Το αρχείο tgz που στείλατε είναι κενό. 02126 - Το πρόγραµµα δεν κάνει compile λόγω λάθους στη switch. - Ελάχιστες Υπάρχουν πολλές άλλες ποσότητες στο πρόγραµµα που έπρεπε να είχαν οριστεί ως σταθερές - Λίγα σχόλια - Σωστές printf. - Λάθος λογική στις if/else. Τα return έπρεπε να είναι στο σώµα - Δε διαβάζετε την επιλογή του χρήστη του if, όχι στο else. Έπρεπε να το είχατε καταλάβει όταν το - Λάθος σύνταξη στην switch. πρόγραµµά σας δεν έβγαζε αποτελέσµατα για έγκυρα δεδοµένα. - Καλή στοίχιση - Καλά ονόµατα µεταβλητών. - ΠΡΟΣΟΧΗ: Αυτή τη φορά θα δικαιολογήσουµε το λάθος στη µεταγλώττιση, αλλά στο µέλλον κάτι τέτοιο είναι αυτόµατο fail. Page 3

02128 -Το πρόγραµµα σας δεν κάνει compile, λόγω τυπογραφικού. Αυτά συµβαίνουν όταν δε γράφετε από την αρχή σωστά τον κώδικα και τρέχετε στο τέλος να προσθέσετε πράγµατα όπως σταθερές κτλ. -Δεν έχετε καθόλου σχόλια στο πρόγραµµάς σας. -Υπολογίζετε λάθος το Position στη σειρά 29 -Τι είναι το gate -64 και -77???? - Φαίνεται σα να µην ξέρετε να γράφετε σύνθετες συνθήκες. Κάντε εξάσκηση πριν να έρχεστε στο εργαστήριο. - Δεν ελέγχετε αν το gate είναι < 'A', εποµένως αν ισχύει αυτό, το πρόγραµµα προσπαθεί να κάνει υπολογισµούς αντί να εκτυπώνει µήνυµα λάθους προς τον χρήστη. -Δεν έχετε κάνει το β µέρος της άσκησης - Πολύ φτωχή εργασία. Περιµένουµε αισθητή βελτίωση στο επόµενο εργαστήριο. 02129 - Το πρόγραµµα δεν κάνει compile. Έχετε ξεχάσει να κλείσετε ένα { µέσα στο κώδικα. - Τρέξατε το πρόγραµµά σας καθόλου? Η αρχική scanf είναι λάθος (δεν έπρεπε να έχει κενό µετά το %d) και δε διαβάζει σωστά την είσοδο. - Καλή προσπάθεια µε τις σταθερές αλλά υπάρχουν κι άλλες σταθερές ποσότητες στο πρόγραµµα.. Επίσης, τα ονόµατα των σταθερών πρέπει να γράφονται µε όλα τα γράµµατα κεφαλαία. - Σωστή χρήση if/else. - Καλή στοίχιση. - Σωστή η χρήση της switch-case αλλά έχετε συντακτικά λάθη. - Η break είναι ξεχωριστή εντολή, εποµένως πάει και σε ξεχωριστή γραµµή. - ΠΡΟΣΟΧΗ: Αυτή τη φορά θα δικαιολογήσουµε το λάθος στη µεταγλώττιση, αλλά στο µέλλον κάτι τέτοιο είναι αυτόµατο fail. 02130 - Σωστά οι σταθερές έχουν κεφαλαία - Σωστή χρήση της switch. - Σωστή χρήση της αριθµητικής χαρακτήρων. - Το πρόγραµµά σας έχει διαφορετική έξοδο. Στο αρχικό µήνυµα λείπει ένα κενό. - ο κώδικας είναι πολύ συµπαγής. Να αφήνετε κενές σειρές ανά κοµµάτια. - Δεν έχετε αρχικό σχόλιο. 02131 - Σωστή στοίχιση - Σωστή ονοµατολογία µεταβλητών. - Σωστή ονοµατολογία σταθερών. - Σωστή χρήση της scanf. - Σωστές συνθήκες στις if - Θα µπορούσατε να έχετε κάνει χρήση της fallthrough effect της switch. Επίσης, το break είναι ξεχωριστή εντολή, εποµένως πάει σε νέα γραµµή. 02132 - Θα θέλαµε ένα σχόλια πάνω-πάνω που να περιγράφει την λειτουργία του προγράµµατος. - Εν µέρη ορθή χρήση σταθερών. Θα έπρεπε να συµπεριλάβετε την ελάχιστη/µέγιστη τιµή ηµεροµηνίας και µήνα, καθώς και το γράµµα 'Α' που χρησιµοποιείτε στην αριθµητική χαρακτήρων. - Σωστή switch, αλλά όχι βέλτιστη. Δείτε την βέλτιστη εκδοχή της switch στις λύσεις. - Αποτυγχάνετε να διαβάσετε την ηµεροµηνία. 02133 FAIL - Απουσία από το εργαστήριο 02134 - Λίγα σχόλια, αλλά καλά. - Σωστή χρήση σταθερών, µπράβο 02137 - Καλά ονόµατα µεταβλητών - Σωστή switch. Το break είναι ξεχωριστή εντολή, άρα έπρεπε να βρίσκεται σε δική του σειρά. - Δεν είστε συνεπείς στη χρήση κενών γραµµών. Για παράδειγµα, Πολύ καλά, µπράβο. οι γραµµες 15, 32, 35, κτλ. δεν έπρεπε να ήταν κενές. 02138 - Στοίχιση, συνεπής αλλά σωστή µόνο εν µέρη. Όλος ο κώδικας µετά το switch θα πρέπει να είναι ένα tab πιο έξω. - Αυτή την φορά βάλατε αρκετά σχόλια, αλλά όχι µε τον σωστό τρόπο. Βάζουµε σχόλια στην αρχή του προγράµµατος µας όπου περιγράφουµε την λειτουργία του. Μέσα στο πρόγραµµα βάζουµε µόνο τα απολύτως απαραίτητα σε σηµεία που ο κώδικας είναι δυσνόητος. - Εν µέρη ορθή χρήση σταθερών. Θα έπρεπε να συµπεριλάβετε την ελάχιστη/µέγιστη τιµή ηµεροµηνίας και µήνα, καθώς και το γράµµα 'Α' που χρησιµοποιείτε στην αριθµητική χαρακτήρων. - Λάθος συνθήκη if (seat>0 seat<max_seats) - Σωστός υπολογισµός σειράς, λάθος υπολογισµός θέσης. - Η σωστή µορφοποίηση στην έξοδο είναι Event on 2015.%02d. %02d και όχι Event on 2015.%d.%d. - Γενικά καλή δουλειά. - Πολύ καλά τα σχόλιά σας και στην αρχή του προγράµµατος και κατά τη διάρκεια της υλοποίησης. - Σωστά ορίσατε κάποιες σταθερές, όµως αυτές δεν είναι γραµµένες µε κεφαλαία γράµµατα ώστε να ξεχωρίζουν από τις κοινές µεταβλητές. Επίσης, θα µπορούσατε να ορίσετε και - Το break είναι ξεχωριστή εντολή, εποµένως πάει παραπάνω σταθερές (τα γράµµατα A, M, N, Z) ώστε το και σε ξεχωριστή γραµµή. πρόγραµµά σας να είναι περισσότερο παραµετρικοποιήσιµο. - Η έξοδος του προγράµµατος είναι σωστή και στα - Τα ονόµατα των µεταβλητών είναι περιγραφικά, αλλά καλό θα δύο µέρη. ήταν να αποφύγετε τη µίξη ελληνικών και αγγλικών λέξεων. Καλύτερα να επικεντρωθείτε στα αγγλικά. - Καλή η χρήση των return. - Σωστή στοίχιση του κώδικα. - Η έξοδος του προγράµµατος είναι σωστή και στα δύο µέρη. Page 4

02139 - Σωστή χρήση και ονοµασία σταθερών, µπράβο.έπρεπε να είχατε και το 1199 σε σταθερά. - Καλά ονόµατα µεταβλητών, αλλά µην τα ξεκινάτε µε κεφαλαίο γράµµα. - Σωστή στοίχιση εκτός από τη γραµµή 20 που έπρεπε να ήταν ένα tab πιο δεξιά., αλλά για το pos θα ήταν πιο κοµψή η χρήση % - Μην αφήνετε περισσότερες από µία διαδοχικές κενές γραµµές. - Ξεχάσατε το κενό πριν το %c στη scanf κι έτσι διαβάζει το enter που είχε ξεµείνει από πριν, όχι την είσοδο του χρήστη. - Ελλειπής switch. - Σωστό το κοµµάτι της switch που γράψατε, εκτός από τη στοίχιση. Μη βάζετε περισσότερες από µία εντολές ανά γραµµή. - Το τελικό return έπρεπε να ήταν ένα tab ιο δεξιά. 02140 - Ο αριθµός των ηµερών του µήνα είναι και αυτός µια σταθερά και θα έπρεπε να δηλωθεί καταλλήλως. - Σωστή χρήση switch. - Αποφεύγετε να βάζετε πάνω από µία εντολές σε µία γραµµή, καθώς αυτό µειώνει την αναγνωσιµότητα του κώδικα (στα cases εντός του switch και στην ίδια γραµµή µε το else). - Σωστή συνθήκη ελεχου για τον αριθµό θέσης. - Σωστός υπολογισµός της σειράς και της θέσης. - Σωστές συνθήκες ελέγχου για την ηµεροµηνία. - Σωστός υπολογισµός του αριθµού του µήνα µε τη χρήση αριθµητικής χαρακτήρων. - Στο µήνυµα εκτύπωσης της ηµεροµηνίας υπάρχουν δύο χαρακτήρες κενού ' ' εκατέρωθεν της πρώτης τελείας µετά το έτος, οι οποίοι δεν χρειάζονται. - Σωστή περιγραφή του προγράµµατος στα γενικά σχόλια. - Σωστοί τύποι µετραβλητών και σταθερών. - Σωστά περιγραφικά ονόµατα µεταβλητών και σταθερών. - Ελλιπής στοίχιση στις εντολές ελέγχου (if-else, switch) και στο τελευταίο return της main(). Διαβάστε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που βρίσκεται στη σελίδα του µαθήµατος. Να είστε πιο προσεκτικοί µε την στοίχιση στα επόµενα εργαστήρια. - Στα µηνύµατα λάθους (αυτά που ξεκινάνε µε "Invalid") υπάρχει ένας έξτρα χαρακτήρας κενού ' ' πριν από το θαυµαστικό '!'. - Μετά από τον εντοπισµό του πρώτου λάθους το πρόγραµµα πρέπει να τερµατίζει µε το κατάλληλο µήνυµα χωρίς να εκτυπώνει τίποτε άλλο. Με τον τρόπο που έχετε δοµήσει τις δοµές ελέγχου, αυτό δεν συµβαίνει εάν ο αριθµός θέσης είναι µη έγκυρος, καθώς ο κώδικας συνεχίζει στον έλεγχο της ηµεροµηνίας. Αυτό µπορεί εύκολα να διορθωθεί βάζοντας µία εντολή return ακριβώς µετά το αντίστοιχο µήνυµα ή χρησιµοποιώντας την τεχνική 'early return' για τις εντολές if-else. 02143 02144 02145 - Σωστή χρήση της αριθµητικής χαρακτήρων. -Δεν έχετε υλοποιήσει το β µέρος της άσκησης. 02146 02147 - Έγινε χρήση µόνο µιας τιµής σαν σταθερά ενώ έχουµε τονίσει οτι πρέπει καθε σταθερή αριθµητική τιµή να δηλώνεται σαν σταθερά. Σωστά το όνοµα της σταθεράς είναι µε κεφαλαία -Τα ονόµατα και οι τύποι των µεταβλητών είναι σωστά και αρκετά περιγραφικά. - Σωστά έχετε βάλει έλεγχο για τις σωστέ τιµές εισόδου που σας δίνει ο χρήστης. Έχετε ένα λάθος στον έλεγχο του µήνα. Δεν έχετε συµπεριλάβει σωστά τις ακραίες τιµές ('Α' και 'L') το οποίο αποτελεί πολύ σηµαντικό λάθος στο πρόγραµµά σας. Θα πρέπει να είστε πιο προσεκτικοί και να δοκιµάζετε ΠΑΝΤΑ τις ακραίες τιµές ακόµη και αν δεν έχουµε βάλει προτεινόµενο παράδειγµα. Σωστά τερµατίζετε το πρόγραµµα σε περίπτωση λάθος τιµής. - Οι πράξεις που έχετε κάνει είναι σωστές και για την εύρεση της θέσης αλλά και τον υπολογισµό του µήνα. - Η έξοδος έχει το σωστό format. - Η στοίχιση σας είναι πολύ σωστή. - Πολύ σωστή είναι και η χρήση του switch. - Σωστά οι σταθερές έχουν κεφαλαία - Σωστή χρήση της if/else, αλλά στο invalid seat ήθελε και εκεί return. - Σωστή χρήση της switch. -Καλή στοίχιση -Δεν έχετε σωστά σχόλια. Διαβάστε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που είναι στη σελίδα του µαθήµατος ώστε να µην ξανακάνετε λάθος στη στοίχιση. -Οι µεταβλητές σας δεν είχανε όλες περιγραφικά ονόµατα. -Το πρόβληµα µε την στοίχιση το είχατε και στο προηγούµενο εργαστήριο όπως επίσης και µε τα περιγραφικά ονόµατα µεταβλητών, τα σχόλια τα γράφουµε για να τα βλέπετε και να βελτιώνεστε και όχι για να τα αγνοείτε. Πάλι δεν χρησιµοποιείτε όπως και στο προηγούµενο εργαστήριο -Σωστοί τύποι µεταβλητών. -Σωστή χρήση if/else -Η έξοδος σας δεν έχει καµία σχέση µε τα παραδείγµατα της εκφώνησης. -Τι είναι το gate-'@'???? Δείτε τη λύση στη σελίδα του µαθήµατος για το πως έπρεπε να κάνετε σωστά τις πράξεις. - Ο αριθµός των ηµερών του µήνα είναι και αυτός µια σταθερά και θα έπρεπε να δηλωθεί καταλλήλως. - Σωστή συνθήκη ελεχου για τον αριθµό θέσης. - Σωστή χρήση switch. - Η στοίχιση της εντολής switch δεν είναι σωστή. Αποφεύγετε να βάζετε πάνω από µία εντολές σε µία γραµµή, καθώς αυτό µειώνει την αναγνωσιµότητα του κώδικα. - Σωστός υπολογισµός της σειράς και της θέσης. - Θα θέλαµε ένα σχόλια πάνω-πάνω που να περιγράφει την λειτουργία του προγράµµατος. - Σωστή χρήση σταθερών. - Σωστή switch. - Σωστός υπολογισµός σειράς/θέσης. - Σωστή µορφοποίηση στην έξοδο για µήνα και ηµεροµηνία. - Σωστές συνθήκες ελέγχου για την ηµεροµηνία. - Σωστός υπολογισµός του αριθµού του µήνα µε τη χρήση αριθµητικής χαρακτήρων. - Στο µήνυµα εκτύπωσης της ηµεροµηνίας υπάρχουν δύο χαρακτήρες κενού ' ' εκατέρωθεν της πρώτης τελείας µετά το έτος, οι οποίοι δεν χρειάζονται. - Έχετε ελαφρώς διαφορετική έξοδος γιατί σας έχει ξεφύγει ένα κενό παραπάνω στο τελευταίο µήνυµα. - Σωστή περιγραφή του προγράµµατος στα γενικά σχόλια. - Σωστοί τύποι µετραβλητών και σταθερών. - Σωστά περιγραφικά ονόµατα µεταβλητών και σταθερών. - Σωστή έξοδος σε όλες τις περιπτώσεις. - Ελλιπής στοίχιση στο σώµα του if-else, στην τελευταία εντολή return της main() και στο τελικό άγκιστρο '}' όπου αυτή κλείνει. Διαβάστε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που βρίσκεται στη σελίδα του µαθήµατος. Να είστε πιο προσεκτικοί µε την στοίχιση στα επόµενα εργαστήρια. - Αποφεύγετε να αφήνετε παραπάνω από µια κενή γραµµή µεταξύ των 'ενοτήτων' του προγράµµατος. Εµφανίζεται λιγότερος κώδικας στο παράθυρο του editor δυσκολεύοντας την παρακολούθηση της λογικής του προγράµµατος, χωρίς να προσφέρει κάποιο άλλο πλεονέκτηµα. - Για τους ελέγχους εγκυρότητας µε if-else, να προτιµάτε να χρησιµοποιείτε την τεχνική 'early return' όποτε αυτό είναι δυνατόν. Με αυτόν τον τρόπο µειώνεται το βάθος της στοίχισης, διευκολύνοντας έτσι την ανάγνωση του κώδικα, αποφεύγοντας ταυτόχρονα περιττές δοµές ελέγχου. Page 5

02148 - Ο αριθµός των διαθέσιµων θέσεων είναι και αυτός µια σταθερά και θα έπρεπε να δηλωθεί καταλλήλως. - Σωστή συνθήκη ελεχου για τον αριθµό θέσης. - Σωστή χρήση switch. - Σωστός υπολογισµός της σειράς και της θέσης. - Στο πρώτο if-else του προγράµµατος, εάν η συνθήκη είναι αληθής (µη έγκυρη είσοδος) το πρόγραµµα τερµατίζει. Αυτό σηµαίνει πως το else µπορεί να αποφευχθεί, τοποθετώντας τις εντολές µέσα σε αυτό κατευθείαν µέσα στη main(). Όποτε αυτό είναι δυνατόν να το προτιµάτε, µε αυτόν τον τρόπο µειώνεται το βάθος της στοίχισης, διευκολύνοντας έτσι την ανάγνωση του κώδικα. Αυτή η τεχνική ονοµάζεται 'early return' και χρησιµοποιείται κατά κόρον. - Το µήνυµα που εκτυπώνετε στην περίπτωση των χαρακτήρων 'M' και 'A' είναι το ίδιο µε την περίπτωση 'V' και 'O'. Αποφεύγετε τα copy-paste! Είναι ο πιο συνηθισµένος τρόπος να εισάγουµε bugs σε ένα πρόγραµµα! Αποφεύγετε τα copy-paste! - Στο µήνυµα εκτύπωσης της σειράς και της θέσης λείπει ένας χαρακτήρας κενού ' ' µετά από το κόµα ','. - Στο µήνυµα εκτύπωσης της σειράς και της θέσης υπάρχει ένας έξτρα χαρακτήρας κενού ' ' πριν από την τελεία '.'. - Σωστές συνθήκες ελέγχου για την ηµεροµηνία. - Σωστός υπολογισµός του αριθµού του µήνα µε τη χρήση αριθµητικής χαρακτήρων. - Στο µήνυµα εκτύπωσης της ηµεροµηνίας υπάρχουν δύο χαρακτήρες κενού ' ' εκατέρωθεν της πρώτης τελείας µετά το έτος, οι οποίοι δεν χρειάζονται. - Σωστή περιγραφή του προγράµµατος στα γενικά σχόλια. - Σωστοί τύποι µετραβλητών και σταθερών. - Σωστά περιγραφικά ονόµατα µεταβλητών και σταθερών. - Αποφεύγετε να αφήνετε παραπάνω από µια κενή γραµµή µεταξύ των 'ενοτήτων' του προγράµµατος. Εµφανίζεται λιγότερος κώδικας στο παράθυρο του editor δυσκολεύοντας την παρακολούθηση της λογικής του προγράµµατος, χωρίς να προσφέρει κάποιο άλλο πλεονέκτηµα. - Πολύ καλή δουλειά, προσοχή στις λεπτοµέρειες! 02149 02153 FAIL κενό tgz 02156 - Έγινε χρήση µόνο µιας τιµής σαν σταθερά ενώ έχουµε τονίσει οτι πρέπει καθε σταθερή αριθµητική τιµή να δηλώνεται σαν σταθερά. Σωστά το όνοµα της σταθεράς είναι µε κεφαλαία -Τα ονόµατα και οι τύποι των µεταβλητών είναι σωστά και αρκετά περιγραφικά. - Σωστά έχετε βάλει έλεγχο για τις σωστέ τιµές εισόδου που σας δίνει ο χρήστης. Έχετε ένα λάθος στον έλεγχο του µήνα. Δεν έχετε συµπεριλάβει σωστά τις ακραίες τιµές ('Α' και 'L') το οποίο αποτελεί πολύ σηµαντικό λάθος στο πρόγραµµά σας. Θα πρέπει να είστε πιο προσεκτικοί και να δοκιµάζετε ΠΑΝΤΑ τις ακραίες τιµές ακόµη και αν δεν έχουµε βάλει προτεινόµενο παράδειγµα. Σωστά τερµατίζετε το πρόγραµµα σε περίπτωση λάθος τιµής. - Οι πράξεις που έχετε κάνει είναι σωστές και για την εύρεση της θέσης αλλά και τον υπολογισµό του µήνα. - Η έξοδος έχει το σωστό format. - Η στοίχιση σας είναι πολύ σωστή. - Πολύ σωστή είναι και η χρήση του switch. - Σωστά οι σταθερές έχουν κεφαλαία - Σωστά ονόµατα µεταβλητών. - Κακή στοίχιση. Ξεκινούν όλα πιο δεξιά από όσο πρέπει. - Δε χρησιµοποείτε αριθµητική χαρακτήρων. - Σωστή χρήση της switch, αλλά σε cases που αντιστοιχούν σε Επίσης η εντολή number_month= 'month' δεν είναι 02154 ίδιες πράξεις δε χρειάζεται break και εντολές σε εκεινές τις case. - Δεν έχετε αρχικό σχόλιο. σωστή. Το month είναι µεταβλητή. Μονά switch (gramma_kwdikou) { εισαγωγικά περικλείουν µόνο χαρακτήρες. case 'T': case 'S': case 'L': printf("event: Ballet - Swan Lake, Tchaikovsky\n"); break; } Επίσης, το break είναι ξεχωριστή εντολή, εποµένως πρέπει να πηγαίνει σε ξεχωριστή γραµµή. - Δεν υπάρχουν Το απαιτούσε ΡΗΤΑ η εκφώνηση. - Σωστή στοίχιση, εκτός από τα else που έπρεπε να είναι όλα ένα tab πιο αριστερά (παρόµοια µε τα αντίστοιχα if) - Σωστή switch, αλλά έχει κακή στοίχιση. Μη - Μην αφήνετε περισσότερες από µία κενές γραµµές στο γράφετε περισσότερες από µία εντολές ανά πρόγραµµα. γραµµή. - Σωστή χρήση if/else - Καλά ονόµατα µεταβλητών - Περιττή χρήση putchar αµέσως µετά την printf. Ενσωµατώστε το \n στην printf. Page 6

-Το πρόγραµµα σας δεν έχει σωστή στοίχιση, πρόβληµα µε τη στοίχιση είχατε και στο προηγούµενο εργαστήριο, τα σχόλια τα γράφουµε για να τα βλέπετε και όχι για να τα αγνοείτε. Διαβάστε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που είναι στη σελίδα του µαθήµατος ώστε να µην ξανακάνετε λάθος στη στοίχιση. -Η δήλωση µεταβλητών γίνεται στην αρχή του προγράµµατος και όχι στη µέση δηλαδή τη µεταβλητή answer δεν έπρεπε να τη δηλώσετε στην σειρά 53 αλλά στην αρχή του προγράµµατος µαζί µε τις άλλες µεταβλητές. -Δεν έχετε χρησιµοποιήσει όλες τις σταθερές που έπρεπε, έπρεπε να βάλετε και το 0 και το 1199 και κατά προτίµηση και τους χαρακτήρες. Επίσης τα ονόµατα των σταθερών που βάλατε έπρεπε να είναι µε ΚΕΦΑΛΑΙΑ. 02157 -Σωστοί τύποι και ονόµατα µεταβλητών. Έκαναν το µέρος Β και είναι οκ -Η πρώτη συνθήκη που ελέγχετε τα όρια του number δεν είναι σωστή. Για να δουλέψει σωστά θα έπρεπε να ήταν και όχι && -Δεν έχετε κάνει σωστό υπολογισµό για το gate στη σειρά 44 είναι -'Ν'+1 και όχι -'Μ'+1 -Η έξοδος σας δεν είναι όπως τα παραδείγµατα της εκφώνησης, δεν χρειάζονταν αλλαγή γραµµής πριν την εισαγωγή εισιτηρίου, επίσης υπήρχε τελεία στο τέλος της τελευταίας πρότασης όπως και στα invalid υπάρχει! στο τέλος. -Στις cases που εκτελούν ίδιο κώδικα µπορούσατε να µην βάλετε 2 φορές τα ίδια printf αλλά µια φορά στο τέλος και χωρίς break ανάµεσά τους. Δείτε τη λύση στη σελίδα του µαθήµατος να καταλάβετε καλύτερα πως. 02158 - Τα σχόλια τα γράφουµε για να βλέπετε τα λάθη σας και να τα διορθώνετε. Δεν έχετε χρησιµοποιήσει κεφαλαία γράµµατα στις σταθερές που χρησιµοποιήσατε και όπως σας είχαµε τονίσει και στο προηγούµενο εργαστήριο. -Τα ονόµατα και οι τύποι των µεταβλητών είναι σωστά και αρκετά περιγραφικά. - Σωστά έχετε βάλει έλεγχο για τις σωστέ τιµές εισόδου που σας δίνει ο χρήστης. Οι έλεγχοι που έχετε βάλει είναι ηµιτελείς. Στον αριθµό θέσης που δίνει ο χρήστης δεν ελέγχετε οτι είναι µεγαλύτερη του 0. - Οι πράξεις που έχετε κάνει είναι σωστές για την εύρεση του µήνα αλλά όχι σωστές για την εύρεση της θέσης. Αν εκτελέσετε τα παραδείγµατα που έχουµε στην εκφώνιση, το αποτέλεσµα είναι σωστό. Στην πραγµατικότητα όµως είναι µια περίπτωση που δεν εµφανίζει το πρόβληµα που έχετε στις πράξεις. Μπορείτε να βρείτε το λάθος που έχετε κάνει; Προσπαθήστε να εντοπίσετε το λάθος στη πράξη για την εύρεση της θέσης χωρίς να δείτε τη λύση. Στη συνέχεια συγκρίνετε διάφορες περιπτώσεις µε το αποτέλεσµα που βγάζει η λύση που ανέβηκε.. - Η έξοδος έχει το σωστό format. - Η στοίχιση σας είναι εν µέρη σωστή. Σας έχει ξεφύγει ένα µεγάλο κοµµάτι προς το τέλος το οποίο είναι ένα tab παραµέσα απο όπου έπρεπε να ήταν. Επίσης σας ξέφυγε και µια '}' στο default κοµµάτι της switch case. - Σωστή η χρήση switch. - Προσοχή να µην επαναλάβετε λάθη που έχουµε επισηµάνει. - Προσοχή να µην επαναλαµβάνετε λάθη που σας έχουν ήδη επισηµανθεί 02159 - Σωστή στοίχιση - Σωστή ονοµατολογία µεταβλητών. - Σωστή ονοµατολογία σταθερών. - Σωστή χρήση της scanf. - Σωστές συνθήκες στις if - Θα µπορούσατε να έχετε κάνει χρήση της fallthrough effect της switch. Επίσης, το break είναι ξεχωριστή εντολή, εποµένως πάει σε νέα γραµµή. 02160 - Σωστή η χρήση σταθερών. Θα µπορούσατε να ορίσετε µε σταθερές και τα γράµµατα που χρησιµοποιήθηκαν στο πρόγραµµά σας. Τα ονόµατα των σταθερών είναι σωστά µε κεφαλαία γράµµατα αλλά θα µπορούσαν να είναι πιο περιγραφικά. - Σωστή η δήλωση των µεταβλητών µε αρκετά περιγραφικά ονόµατα. Δεν ορίσατε όµως µε σωστό τύπο δεδοµένων την day µεταβλητή (είναι double ενώ θα έπρεπε να ήταν ακέραια) - Κάνατε έλεγχο για τις ακραίες τιµές αλλά σας ξέφυγαν κάποιες τιµές. Η τιµή 857 είναι σωστή να την δώσει ο χρήστης ( είναι η τελευταία θέση). Επίσης η ηµέρα 30 του µήνα επίσης θεωρείται σωστή. Σωστά τερµατίζετε το πρόγραµµα αν προκύψει κάποια ακραία τιµή. - Σωστοί είναι οι υπολογισµοί που κάνατε και για τον εντοπισµό της θέσης καθώς και για την εύρεση του µήνα. Μια παρατήρηση είναι οτι όταν θέλετε να κάνετε πρόσθεση,αφαίρεση ή όποια άλλη πράξη θέλετε µε κάποιον µονοψήφιο αριθµό, δεν χρειάζετε να βάλετε 0 µπροστά του. Είδα οτι χρησιµοποιήσατε το 01 αντί για 1. - Σωστή είναι η στοίχιση σας αν και σας έχει ξεφύγει µια γραµµή εντός ενός if. - Η έξοδος σας είναι σωστά τυπωµένη αν εξαιρέσουµε το λάθος που κάνατε παραπάνω να δηλώσετε τη µέρα σαν double και άρα κάνετε εκτύπωση σαν double. - Σωστή η χρήση switch. Κάτι το οποίο θα µπορούσατε να κάνετε είναι να εκµεταλλευτείτε το γεγονός οτι κάποια cases αντιστοιχούν σε ίδια εκτέλεση κώδικα. Σε αυτή την περίπτωση µπορείτε να δηλώσετε τα cases µε τη σειρά χωρίς να βάλετε κώδικα ή break, και να βάλετε πράξεις µόνο στο τελευταίο case. Για παράδειγµα: case 'T' : case 'S' : case 'L' : printf("event: Ballet - Swan Lake, Tchaikovsky\n"); break; - Το πιό σηµαντικό λάθος που κάνατε είναι οτι διαβάζετε σε διαφορετικό σηµείο το πρώτο µέρος του εισιτηρίου και σε διαφορετικό σηµείο το δεύτερο µέρος. Αυτό στο µέλλον µπορεί να έχει πολύ σηµαντικές συνέπιες και δείχνει οτι δεν µπορείτε να κάνετε σωστό format για να διαβάσετε κάποιες τιµές µε την scanf. Page 7

02161 - Ο αριθµός των διαθέσιµων θέσεων είναι και αυτός µια σταθερά και θα έπρεπε να δηλωθεί καταλλήλως. - Σωστή συνθήκη ελεχου για τον αριθµό θέσης. - Σωστή χρήση switch. - Σωστός υπολογισµός της σειράς και της θέσης. - Στο πρώτο if-else του προγράµµατος, εάν η συνθήκη είναι αληθής (µη έγκυρη είσοδος) το πρόγραµµα τερµατίζει. Αυτό σηµαίνει πως το else µπορεί να αποφευχθεί, τοποθετώντας τις εντολές µέσα σε αυτό κατευθείαν µέσα στη main(). Όποτε αυτό είναι δυνατόν να το προτιµάτε, µε αυτόν τον τρόπο µειώνεται το βάθος της στοίχισης, διευκολύνοντας έτσι την ανάγνωση του κώδικα. Αυτή η τεχνική ονοµάζεται 'early return' και χρησιµοποιείται κατά κόρον. - Το µήνυµα που εκτυπώνετε στην περίπτωση των χαρακτήρων 'M' και 'A' είναι το ίδιο µε την περίπτωση 'V' και 'O'. Αποφεύγετε τα copy-paste! Είναι ο πιο συνηθισµένος τρόπος να εισάγουµε bugs σε ένα πρόγραµµα! Αποφεύγετε τα copy-paste! - Στο µήνυµα εκτύπωσης της σειράς και της θέσης λείπει ένας χαρακτήρας κενού ' ' µετά από το κόµα ','. - Στο µήνυµα εκτύπωσης της σειράς και της θέσης υπάρχει ένας έξτρα χαρακτήρας κενού ' ' πριν από την τελεία '.'. - Σωστές συνθήκες ελέγχου για την ηµεροµηνία. - Σωστός υπολογισµός του αριθµού του µήνα µε τη χρήση αριθµητικής χαρακτήρων. - Στο µήνυµα εκτύπωσης της ηµεροµηνίας υπάρχουν δύο χαρακτήρες κενού ' ' εκατέρωθεν της πρώτης τελείας µετά το έτος, οι οποίοι δεν χρειάζονται. - Σωστή περιγραφή του προγράµµατος στα γενικά σχόλια. - Σωστοί τύποι µετραβλητών και σταθερών. - Σωστά περιγραφικά ονόµατα µεταβλητών και σταθερών. - Αποφεύγετε να αφήνετε παραπάνω από µια κενή γραµµή µεταξύ των 'ενοτήτων' του προγράµµατος. Εµφανίζεται λιγότερος κώδικας στο παράθυρο του editor δυσκολεύοντας την παρακολούθηση της λογικής του προγράµµατος, χωρίς να προσφέρει κάποιο άλλο πλεονέκτηµα. - Πολύ καλή δουλειά, προσοχή στις λεπτοµέρειες! 02162 - Απουσία σχολίων. - Σωστή χρήση σταθερών. - Σωστή switch. - Σωστός υπολογισµός σειράς/θέσης. - Σωστή αριθµητική χαρακτήρων. - Σωστή µορφοποίηση στην έξοδο για µήνα και ηµεροµηνία. 02163 - Τα σχόλια σε όλη την έκταση του προγράµµατος είναι ελλιπή. - Κακή στοίχιση του κώδικα. Διαβάστε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που είναι στη σελίδα του µαθήµατος. - Λάθος υπολογισµοί. Πώς σας ήρθε να χρησιµοποιήσετε & για τον υπολογισµό υπολοίπου? - Τα ονόµατα των µεταβλητών είναι περιγραφικά αλλά δεν ορίσατε αρκετές - Η έξοδος του προγράµµατος δεν είναι σωστή στο Α µέρος. - Γενικά τα µηνύµατα εξόδου που δώσατε δεν ήταν ακριβώς όπως σας περιέγραφε η άσκηση. Πρέπει να είστε συνεπείς. - Το Β µέρος δεν τρέχει καθόλου γιατί είναι λάθος η scanf. Ξεχάσατε το κενό που βάζουµε για να καταναλώσει το enter που είχε εισαχθεί στην προηγούµενη είσοδο. - Σωστή σύνταξη της switch, αλλά το break είναι ξεχωριστή εντολή, εποµένως πάει και σε ξεχωριστή γραµµή. - Πάλι δεν ορίσατε - Δεν γράφετε καλά σχόλια. - Δεν αλλάζετε σωστά γραµµές στον κώδικα ώστε να είναι ευανάγνωστος. - Η έξοδος δεν είναι όπως ζητείται στην άσκηση. - Τα σχόλια των προηγούµενων εργαστηρίων γράφονται για να βοηθήσουν εσάς. Διαβάστε τα. 02165 - Θα θέλαµε ένα σχόλια πάνω-πάνω που να περιγράφει την λειτουργία του προγράµµατος. - Σωστή χρήση σταθερών. - Σωστή switch. - Σωστός υπολογισµός σειράς/θέσης. - Η σωστή µορφοποίηση στην έξοδο είναι Event on 2015.%02d. %02d και όχι Event on 2015.%d.%d. 02166 - Σωστά οι σταθερές έχουν κεφαλαία - Σωστή χρήση της switch, αλλά το break έπρεπε να είναι σε νέα γραµµή γιατί είναι ξεχωριστή εντολή. - Το πρόγραµµά σας έχει διαφορετική έξοδο. Στο αρχικό µήνυµα λείπει ένα κενό. Ακόµα στο Ivalid seat number! δεν έχετε µετα αλλαγής σειράς. - Σωστή χρήση της αριθµητικής χαρακτήρων. 02168 -Λάθος στοίχιση!!διαβάστε οπωσδήποτε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" -Τις σταθερές τις δηλώνουµε µε ΚΕΦΑΛΑΙΑ -Ο αριθµός των θέσεων θα έπρεπε να είναι και αυτός µία σταθερή µεταβλητή Έχετε κάνει λάθος στον έλεγχο.έπρεπε να είναι "code>1199"και όχι ''code>=1199'' -Δεν ακολουθήσατε τις οδηγίες για το µήνυµα που θα εκτυπώνεται όσον αφορά την επιλογή µεταξύ coffee-juice-water.να προσέχετε την εκφώνηση!!! - Θα µπορούσατε να έχετε κάνει χρήση της fallthrough effect της switch. Επίσης, το break είναι ξεχωριστή εντολή, εποµένως πάει σε νέα γραµµή. 02169 02170 - Ο αριθµός των ηµερών του µήνα είναι και αυτός µια σταθερά και θα έπρεπε να δηλωθεί καταλλήλως. - Σωστή συνθήκη ελεχου για τον αριθµό θέσης. - Σωστή χρήση switch. - Η στοίχιση της εντολής switch δεν είναι σωστή. Αποφεύγετε να βάζετε πάνω από µία εντολές σε µία γραµµή, καθώς αυτό µειώνει την αναγνωσιµότητα του κώδικα. - Σωστός υπολογισµός της σειράς και της θέσης. - Οι συνολικές θέσεις και τα γράµµατα 'Α' και 'L' θα έπρεπε να µπουν και αυτά σε - Οι σταθερές πρέπει να είναι µε κεφαλαία. - Σωστή χρήση της switch, αλλά το break έπρεπε να είναι σε νέα γραµµή γιατί είναι ξεχωριστή εντολή. - Σωστές συνθήκες ελέγχου για την ηµεροµηνία. - Σωστός υπολογισµός του αριθµού του µήνα µε τη χρήση αριθµητικής χαρακτήρων. - Στο µήνυµα εκτύπωσης της ηµεροµηνίας υπάρχουν δύο χαρακτήρες κενού ' ' εκατέρωθεν της πρώτης τελείας µετά το έτος, οι οποίοι δεν χρειάζονται. - Σωστή χρήση της αριθµητικής χαρακτήρων. - Σωστή περιγραφή του προγράµµατος στα γενικά σχόλια. - Σωστοί τύποι µετραβλητών και σταθερών. - Σωστά περιγραφικά ονόµατα µεταβλητών και σταθερών. - Σωστή έξοδος σε όλες τις περιπτώσεις. - Ελλιπής στοίχιση στο σώµα του if-else, στην τελευταία εντολή return της main() και στο τελικό άγκιστρο '}' όπου αυτή κλείνει. Διαβάστε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που βρίσκεται στη σελίδα του µαθήµατος. Να είστε πιο προσεκτικοί µε την στοίχιση στα επόµενα εργαστήρια. - Αποφεύγετε να αφήνετε παραπάνω από µια κενή γραµµή µεταξύ των 'ενοτήτων' του προγράµµατος. Εµφανίζεται λιγότερος κώδικας στο παράθυρο του editor δυσκολεύοντας την παρακολούθηση της λογικής του προγράµµατος, χωρίς να προσφέρει κάποιο άλλο πλεονέκτηµα. - Για τους ελέγχους εγκυρότητας µε if-else, να προτιµάτε να χρησιµοποιείτε την τεχνική 'early return' όποτε αυτό είναι δυνατόν. Με αυτόν τον τρόπο µειώνεται το βάθος της στοίχισης, διευκολύνοντας έτσι την ανάγνωση του κώδικα, αποφεύγοντας ταυτόχρονα περιττές δοµές ελέγχου. Page 8

- Ελάχιστα σχόλια 02171 - Δεν υπάρχουν Το απαιτούσε ΡΗΤΑ η εκφώνηση - Σωστό το κοµµάτι της switch που γράψατε, εκτός - Σωστή στοίχιση, µπράβο. από τη στοίχιση. Μη βάζετε περισσότερες από µία - Προσοχή στις απαιτήσεις της εκφώνησης.. εντολές ανά γραµµή. - Καλά ονόµατα µεταβλητών. - Για το position θα ήταν πιο κοµψή η χρήση %. 02172 02173 02174 02177 02178 - Το πρόγραµµα δεν κάνει compile. Έχετε ξεχάσει να κλείσετε ένα { µέσα στο κώδικα. - Τρέξατε το πρόγραµµά σας καθόλου? Η αρχική scanf είναι λάθος (δεν έπρεπε να έχει κενό µετά το %d) και δε διαβάζει σωστά την είσοδο. - Καλή προσπάθεια µε τις σταθερές αλλά υπάρχουν κι άλλες σταθερές ποσότητες στο πρόγραµµα.. Επίσης, τα ονόµατα των σταθερών πρέπει να γράφονται µε όλα τα γράµµατα κεφαλαία. - Σωστή χρήση if/else. - Καλή στοίχιση. - Σωστή η χρήση της switch-case αλλά έχετε συντακτικά λάθη. - Η break είναι ξεχωριστή εντολή, εποµένως πάει και σε ξεχωριστή γραµµή. - Γενικά καλή δουλειά. - Kαλά τα σχόλιά σας και στην αρχή του προγράµµατος και κατά τη διάρκεια της υλοποίησης. Το µόνο σχόλιο που δεν χρειαζόταν είναι αυτό δίπλα στην if else στη σειρά 34, καθώς εξηγείτε απλά πως δουλεύει το if. Επίσης, αποφεύγετε να γράφετε τεράστιες γραµµές (κώδικα ή σχολίων) γιατί κάνουν wrap around σε µικρότερες οθόνες. Αν τα σχόλια για µια γραµµή είναι πολλά, γράψτε τα από πάνω ή/και σε µπρφή παραγράφου. Επίσης, µην τα βάζετε πολύ µακρυά από τον κώδικα (στη γραµµή 34 ο - Σωστά τοποθετήσατε τα break στο switch-case. κώδικας τελειώνει στη στήλη 13 και τα σχόλια ξεκινούν στη στήλη - Η έξοδος του προγράµµατος είναι σωστή και στα 61!) δύο µέρη, αλλά έχετε ξεχάσει να εισάγετε ένα κενό - Σωστή στοίχιση του κώδικα. µετά την άνω-κάτω τελεία όταν ζητείται από τον - Πολύ καλός ο ορισµός των σταθερών σας. χρήστη τι θα πιεί. - Τα ονόµατα των µεταβλητών είναι περιγραφικά. - Το break είναι ξεχωριστή εντολή, εποµένως πάει - Καλό είναι να αποφεύγετε οποιαδήποτε µίξη αγγλικών και και σε ξεχωριστή γραµµή. ελληνικών στα ονόµατα µεταβλητών και γενικά στον κώδικα. - Στην περίπτωση λάθος εισόδου, καλό είναι η return να έχει σαν όρισµα οτιδήποτε άλλο εκτός από µηδέν. Κατά σύµβαση χρησιµοποιούµε το return(0); όταν η εκτέλεση φτάσει στο τέλος της χωρίς κανένα invalid input. - Η έξοδος του προγράµµατος είναι σωστή και στα δύο µέρη, αλλά έχετε ξεχάσει να εισάγετε ένα κενό µετά την άνω-κάτω τελεία όταν ζητείται από τον χρήστη τι θα πιεί. - Τα σχόλια τα γράφουµε για να βλέπετε τα λάθη σας και να τα διορθώνετε. Δεν έχετε χρησιµοποιήσει καθόλου σταθερές όπως και στο προηγούµενο εργαστήριο. -Τα ονόµατα και οι τύποι των µεταβλητών είναι σωστά και αρκετά περιγραφικά. - Σωστά έχετε βάλει έλεγχο για τις σωστέ τιµές εισόδου που σας δίνει ο χρήστης. Το λάθος που κάνατε είναι οτι δεν τερµατίζετε το πρόγραµµα σε κάθε περίπτωση λάθους τιµής. - Οι πράξεις που έχετε κάνει είναι σωστές για την εύρεση της θέσης. - Η έξοδος έχει το σωστό format. - Η στοίχιση σας είναι εν µέρη σωστή. Έχετε κάνει ένα βασικό λάθος µε τις '}' που κλείνουν στα case και στα if που χρησιµοποιήσατε. Οι '}' µπαίνουν πάντα σε ξεχωριστή γραµµή. - Σωστή η χρήση switch. Οι '{ }' που βάλατε δεν είναι απαραίτητες. Θα µπορούσατε να τις είχατε παραλείψει. - Είναι λίγο αντισυµβατικός ο τρόπος που κάνατε την ανάγνωση του κωδικού των εισιτηρίων. Θα µπορούσατε να το κάνετε µε µια µόνο scanf και όχι µε τις 4 εντολές που χρησιµοποιήσατε. Διαβάστε καλύτερα το πως συντάσσεται η scanf και δοκιµάστε να κάνετε την άσκηση µε µόνο µια εντολή. - Γενικά καλή δουλειά αλλά προσοχή να µην επαναλάβετε λάθη που έχουµε επισηµάνει. - Απουσία σχολίων. - Μέτρια στοίχιση του κώδικα. Τα άγκιστρα στις if/else είναι κατά το πλείστον λάθος. Το τελευταίο άγκιστρο της main έπρεπε να είναι στην αρχή της γραµµής. Επίσης, µην βάζετε περισσότερες από µία διαδοχικές κενές γραµµές. - Τα ονόµατα των µεταβλητών είναι περιγραφικά, εκτός από τα theseis1, 2 - Το πρόγραµµα έχει κι άλλες ποσότητες που έπρεπε να είχαν δηλωθεί ως - Η έξοδος του Α µέρους είναι σωστή. - Σωστή στοίχιση - Σωστή ονοµατολογία µεταβλητών. - Σωστή ονοµατολογία σταθερών. - Σωστή χρήση της scanf. - Σωστές συνθήκες στις if - Η υλοποίηση του Β µέρους δεν δουλεύει σωστά: η πρώτη getchar αποθηκεύει το enter στο rofima ενώ η δεύτερη παίρνει (και πετάει) την επιλογή του χρήστη. - Λείπουν κάποια cases. - Η break είναι ξεχωριστή εντολή, εποµένως πάει και σε ξεχωριστή γραµµή. - Σωστή χρήση της fall-through effect της switch. Τα { ; } δεν χρειαζόταν στα κοινά cases που είναι "κενά" - Το break είναι ξεχωριστή εντολή, εποµένως πάει σε νέα γραµµή. - ΠΡΟΣΟΧΗ: Αυτή τη φορά θα δικαιολογήσουµε το λάθος στη µεταγλώττιση, αλλά στο µέλλον κάτι τέτοιο είναι αυτόµατο fail. - Προσοχή να µην επαναλαµβάνετε λάθη που σας έχουν ήδη επισηµανθεί 02179 - Σωστή στοίχιση - Σωστή ονοµατολογία µεταβλητών. - Σωστή ονοµατολογία σταθερών. - Σωστή χρήση της scanf. - Σωστές συνθήκες στις if -Αντί για letter - 'A' + 1 γράψατε letter - '@'!!!!Έτσι γίνεται η αριθµητική χαρακτήρων;; Επιπλέον, κάτι τέτοιο είναι ακαταλαβίστικο! - Σωστή χρήση του fall-through effect της switch Προσέξτε την εκφώνηση!!!η µέγιστη τιµή των θέσεων ήταν 1200 και όχι - Το break είναι ξεχωριστή εντολή, εποµένως πάει 2000. σε νέα γραµµή. Page 9

02180 - Απουσία σχολίων. - Μέτρια στοίχιση του κώδικα. Τα άγκιστρα στις if/else είναι κατά το πλείστον λάθος. Το τελευταίο άγκιστρο της main έπρεπε να είναι στην αρχή της γραµµής. Επίσης, µην βάζετε περισσότερες από µία διαδοχικές κενές γραµµές. - Τα ονόµατα των µεταβλητών είναι περιγραφικά, εκτός από τα theseis1, 2 - Το πρόγραµµα έχει κι άλλες ποσότητες που έπρεπε να είχαν δηλωθεί ως - Η έξοδος του Α µέρους είναι σωστή. - Η υλοποίηση του Β µέρους δεν δουλεύει σωστά: η πρώτη getchar αποθηκεύει το enter στο rofima ενώ η δεύτερη παίρνει (και πετάει) την επιλογή του χρήστη. - Λείπουν κάποια cases. - Η break είναι ξεχωριστή εντολή, εποµένως πάει και σε ξεχωριστή γραµµή. - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Λάθος χρήση της scanf. Το γεγονός ότι η scanf είναι αρκετά "έξυπνη" δεν σηµαίνει ότι το µοτίβο που χρησιµοποιήσατε είναι σωστό. Έπρεπε να χρησιµοποιήσετε "%c%d-%c%d", το ότι δουλεύει το πρόγραµµα µας είναι ένα τυχαίο συµβάν εξαρτώµενο 02181 από την έκδοση του compiler και την υλοποίηση της βιβλιοθήκης scanf! - Έλλειψη αρχικών σχόλιων. Παρακαλούµε µη γράφετε σχόλια στα ελληνικά! - Θα έπρεπε να ελεγχέτε την ορθότητα της σειράς πριν το κωδικό - Θα έπρεπε να χρησιµοποιήσετε %02d στην εκτύπωση του µήνα και της ηµέρας. - Σωστή χρήση του fall-through effect της switch. - Λάθος συνθήκες στις if µε αποτέλεσµα το Β' Μέρος της άσκησης να είναι λάθος. 02183 02184 - Σωστή χρήση της αριθµητικής χαρακτήρων. - Οι συνολικές θέσεις και τα γράµµατα 'Α' και 'L' θα έπρεπε να µπουν και αυτά σε - Οι σταθερές πρέπει να είναι µε κεφαλαία. - Σωστή χρήση της switch, αλλά το break έπρεπε να είναι σε νέα γραµµή γιατί είναι ξεχωριστή εντολή. -Δεν έχετε σωστά σχόλια. -Σε γενικές γραµµές σωστή στοίχιση απλά προσέξτε σε ποια στήλη κλείνετε τα άγκιστρα. -Δεν έχετε χρησιµοποιήσει όλες τις σταθερές που έπρεπε, έπρεπε να βάλετε και το 0 και το 1199 και κατά προτίµηση και τους χαρακτήρες. Επίσης τα ονόµατα των σταθερών που βάλατε έπρεπε να είναι µε ΚΕΦΑΛΑΙΑ. -Σωστοί τύποι και ονόµατα µεταβλητών. -Σωστή χρήση if/else. -Τι είναι το code_letter-'@'???? Δείτε τη λύση στη σελίδα του µαθήµατος για το πως έπρεπε να κάνετε σωστά τις πράξεις. -Το position θέλαµε να υπολογιστεί µε τη πράξη του modulo δείτε τη λύση για το πως γίνεται. -Δεν έχετε κάνει το β µέρος της άσκησης. 02185 - Σωστά οι σταθερές έχουν κεφαλαία - Σωστή χρήση της switch. - Σωστή χρήση της αριθµητικής χαρακτήρων. - Το πρόγραµµά σας έχει διαφορετική έξοδο. Έχετε ξεχάσει το αρχικό µήνυµα! 02186 - Ήταν το 4ο σε σειρά εργαστήριο και έχετε λάθος στοίχιση! Διαβάστε οπωσδήποτε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που βρίσκεται στην σελίδα του µαθήµατος. - Τα όνοµατα τον µεταβλητών πρέπει να είναι περιεκτικά και συνοπτικά στο τι αντιπροσωπεύει η µεταβλητή π.χ. ονόµατα σαν και το month_2 δεν ικανοποιούν τα προαναφερθέντα κριτήρια. - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Λάθος χρήση της scanf. Το γεγονός ότι η scanf είναι αρκετά "έξυπνη" δεν σηµαίνει ότι το µοτίβο που χρησιµοποιήσατε είναι σωστό. Έπρεπε να χρησιµοποιήσετε "%c%d-%c%d", το ότι δουλεύει το πρόγραµµα µας είναι ένα τυχαίο συµβάν εξαρτώµενο από την έκδοση του compiler και την υλοποίηση της βιβλιοθήκης scanf! - Τα αρχικά σχόλια τα γράφουµε πάνω από την main. - Σωστή σειρά ελέγχου ορθότητας αριθµού σειράς και κωδικού - Θα έπρεπε να χρησιµοποιήσετε %02d στην εκτύπωση του µήνα και της ηµέρας. - Σωστή χρήση του fall-through effect της switch. - Σωστές συνθήκες στις if. - Πολύπλοκη χρήση των ελέγχων if µε αποτέλεσµα το πρόγραµµα από άποψη δοµής να γίνεται δυσνόητο. Θα µπορούσατε να ελέγχετε απευθέιας για την απαγορευτική συνθήκη και να κάνετε αµέσως return. Έτσι δεν θα χρειαζόταν ο υπόλοιπος κώδικας να µπει µέσα σε κάποια if. Page 10

02187 - Τα σχόλια τα γράφουµε για να βλέπετε τα λάθη σας και να τα διορθώνετε. Δεν έχετε χρησιµοποιήσει κεφαλαία γράµµατα στις σταθερές που χρησιµοποιήσατε και όπως σας είχαµε τονίσει και στο προηγούµενο εργαστήριο. -Τα ονόµατα και οι τύποι των µεταβλητών είναι σωστά και αρκετά περιγραφικά. - Σωστά έχετε βάλει έλεγχο για τις σωστέ τιµές εισόδου που σας δίνει ο χρήστης. Οι έλεγχοι που έχετε βάλει είναι ηµιτελείς. Στον αριθµό θέσης που δίνει ο χρήστης δεν ελέγχετε οτι είναι µεγαλύτερη του 0. - Οι πράξεις που έχετε κάνει είναι σωστές για την εύρεση του µήνα αλλά όχι σωστές για την εύρεση της θέσης. Αν εκτελέσετε τα παραδείγµατα που έχουµε στην εκφώνιση, το αποτέλεσµα είναι σωστό. Στην πραγµατικότητα όµως είναι µια περίπτωση που δεν εµφανίζει το πρόβληµα που έχετε στις πράξεις. Μπορείτε να βρείτε το λάθος που έχετε κάνει; Προσπαθήστε να εντοπίσετε το λάθος στη πράξη για την εύρεση της θέσης χωρίς να δείτε τη λύση. Στη συνέχεια συγκρίνετε διάφορες περιπτώσεις µε το αποτέλεσµα που βγάζει η λύση που ανέβηκε.. - Η έξοδος έχει το σωστό format. - Η στοίχιση σας είναι εν µέρη σωστή. Σας έχει ξεφύγει ένα µεγάλο κοµµάτι προς το τέλος το οποίο είναι ένα tab παραµέσα απο όπου έπρεπε να ήταν. Επίσης σας ξέφυγε και µια '}' στο default κοµµάτι της switch case. - Σωστή η χρήση switch. - Προσοχή να µην επαναλάβετε λάθη που έχουµε επισηµάνει. - Προσοχή να µην επαναλαµβάνετε λάθη που σας έχουν ήδη επισηµανθεί -Καθόλου καλή στοίχιση. Διαβάστε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που είναι στη σελίδα του µαθήµατος ώστε να µην ξανακάνετε λάθος στη στοίχιση. -Δεν έχετε καθόλου σχόλια στο πρόγραµµα σας. -Αφήνετε πάρα πολλές κενές γραµµές πριν το return αρκεί µια, ενώ σε κάποια άλλα σηµεία ο κώδικά σας είναι πολύ πατικωµένος. -Σωστοί τύποι και ονόµατα µεταβλητών. -Δεν έχετε χρησιµοποιήσει όλες τις σταθερές που έπρεπε, 02188 έπρεπε να βάλετε και το 0 και το 1199 και κατά προτίµηση και τους - Σωστή υλοποίηση switch χαρακτήρες. Επίσης τα ονόµατα των σταθερών που βάλατε έπρεπε να είναι µε ΚΕΦΑΛΑΙΑ. -Στο πρώτο if έχετε παραπάνω από µια εντολές άρα έπρεπε να βάλετε άγκιστρα. -Η έξοδος σας δεν είναι όπως τα παραδείγµατα της εκφώνησης, δεν χρειάζονταν αλλαγή γραµµής πριν την εισαγωγή εισιτηρίου, επίσης υπήρχε τελεία στο τέλος της τελευταίας πρότασης όπως και στο τέλος του code υπήρχαν : 02189 02190 - Ήταν το 4ο σε σειρά εργαστήριο και έχετε λάθος στοίχιση! Διαβάστε οπωσδήποτε το φυλλάδιο "Αρχές Καλού Προγραµµατισµού" που βρίσκεται στην σελίδα του µαθήµατος. - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Ο κενός χαρακτήρας µπρόστα απο το µοτίβο της scanf δεν είναι απαραίτητος. Διαβάστε πάλι από τις διαλέξεις την εντολή scanf και πότε χρησιµοποιείται ο κενός χαρακτήρας. - Μεταβλητές i,j,k... χρησιµοποιούνται καθαρά και indexing λόγους µιας επανάληψης και όχι για- τον έλεγχο ροής του προγράµµατος! - Ολοκληρωτική έλλειψη σχολίων. - Θα έπρεπε να ελεγχέτε την ορθότητα της σειράς πριν το κωδικό - Θα έπρεπε να χρησιµοποιήσετε %02d στην εκτύπωση του µήνα και της ηµέρας. - Σωστή χρήση του fall-through effect της switch. - Σωστές συνθήκες στις if. - Καθόλου περιγραφικά ονόµατα µεταβλητών. - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Ο κενός χαρακτήρας µπρόστα απο το µοτίβο της scanf δεν είναι απαραίτητος. Διαβάστε πάλι από τις διαλέξεις την εντολή scanf και πότε χρησιµοποιείται ο κενός χαρακτήρας. Αυτός είναι ο λόγος που το Μέρος Β δεν είναι σωστό! - Ολοκληρωτική έλλειψη σχολίων. - Θα έπρεπε να ελεγχέτε την ορθότητα της σειράς πριν το κωδικό - Θα έπρεπε να χρησιµοποιήσετε %02d στην εκτύπωση του µήνα και της ηµέρας. - Σωστή χρήση του fall-through effect της switch, αλλά λάθος τοποθετηµένα τα άγκιστρα στις επιµέρους περιπτώσεις. Καλύτερα θα ήταν να τα είχατε παραλείψει. - Σωστές συνθήκες στις if. Και στο προηγούµενο εργαστήριο είχατε θέµα µε τις σταθερές, τα σχόλια και την διαφοροποίηση των µηνυµάτων εξόδου απο τα ζητούµενα. Στο επόµενο εργαστήριο φροντίστε να διαβάσετε πολύ καλά την εκφώνηση και να εξαλείψετε τα κατα σειρά εργαστηρίων λάθη σας. - Τα περιεχόµενα του tgz δεν είναι όπως ζητούσε η άσκηση. Να διαβάζετε καλά της οδηγίες αποστολής! Page 11