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

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

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

FAIL PASS PASS οριακά

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

Sheet1_2 FAIL. - To πρόγραµµα δεν κάνει compile Δεν παρέδωσε FAIL

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

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

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

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

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

to post PASS PASS FAIL

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

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

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

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

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

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

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

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

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

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

ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ. 812 PASS Καλή δουλειά

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

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

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

Επανάληψη για τις Τελικές εξετάσεις

Στην clearlist: - Όλα ok. οριακό PASS

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

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

Sheet PASS 1426 PASS 1428 PASS. Page 1

Μεθόδων Επίλυσης Προβλημάτων

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΣΧΟΛΙΑ ΓΙΑ ΤΟ LAB 1. Sheet3_2

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

ΑΕΜ ή username. Sheet2

Βαθμός Σχόλια. lab8. οριακά PASS 1194 PASS

Η βασική συνάρτηση προγράμματος main()

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

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

Προγραμματισμό για ΗΜΥ

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Μ.Σ. lab12grades FAIL. η συνθήκη για έξοδο είναι και αυτή σωστή. Οριακό PASS. στα string. - σωστή και η κλήση της συνάρτησης.

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

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

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Ηβασικήσυνάρτηση προγράμματος main()

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Transcript:

AEM 0001 0002 0003 COMMENTS -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου! -Τυπώνεις 1,2,3 αντί για AVAILABLE, RESERVED, LOST. Έπρεπε να βάλεις µια δοµή επιλογής (π.χ. if, switch). -Διόρθωσε την στοίχισή σου! -Δεν έχεις καθόλου σχόλια! 0004 -Η σύγκριση ανάµεσα σε δύο strings γίνεται µε την συνάρτηση strcmp της βιβλιοθήκης string.h και όχι µε ==. -Η συνάρτηση find_book είναι λάθος. Επιστρέφει πάντα 9 όπως την έχεις. -Δεν καλείς σωστά την συνάρτηση find_book. -Δεν έχεις καθόλου σχόλια! -Διόρθωσε την στοίχισή σου! Page 1

0005 0006 lab7 - Έχεις ξεχάσει τον τελεστή & στο δεύτερο όρισµα της τρίτης εντολής scanf στη συνάρτηση main µε αποτέλεσµα να υπάρχει ενδεχόµενο για segmentation fault. Για το λάθος αυτό σε ενηµέρωνε το πρώτο warning. Η σύνταξη της scanf έχει καλυφθεί σε προηγούµενα εργαστήρια. - Τα λανθασµένα αποτελέσµατα στην αναζήτηση οφείλονται στο γεγονός ότι στις εντολές scanf στη συνάρτηση main για την αρχικοποίηση του βιβλίου προς αναζήτηση πρώτα διαβάζεις τον τίτλο του βιβλίου και έπειτα το όνοµα του συγγραφέα. Αντί αυτού, θα έπρεπε να διαβάζεις πρώτα τον συγγραφέα και έπειτα τον τίτλο καθώς αυτή είναι και η µορφή του αρχείου εισόδου. - Καθώς το µέγιστο µέγεθος αλφαριθµητικού είναι ίσο µε 40 χαρακτήρες, στις δύο εντολές scanf της συνάρτησης main, θα έπρεπε να διαβάζεις µέχρι 39 χαρακτήρες. - Η σύνταξη της δεύτερης εντολής scanf στη συνάρτηση main δεν είναι σωστή. Το προσδιοριστικό του εύρους θα πρέπει να βρίσκεται πριν τον χαρακτήρα '' % ''. - Η συνάρτηση find_book δεν έχει υλοποιηθεί σωστά. Η εντολή '' else '' είναι λανθασµένη καθώς, σε περίπτωση που δεν βρεις το βιβλίο στην πρώτη θέση του πίνακα, επιστρέφεις την τιµή 0. Η µη εύρεση του βιβλίου στην πρώτη θέση δεν αποκλείει την ύπαρξη αυτού σε κάποια άλλη θέση. Εποµένως, η εντολή '' return(0) '' θα έπρεπε να βρίσκεται έξω από την εντολή '' for ''. - Στις δύο πρώτες εντολές printf της συνάρτησης print_books το προσδιοριστικό εύρους είναι περιττό. - Η σύγκριση για λεξικογραφική ισότητα µεταξύ αλφαριθµητικών δεν γίνεται µε το τελεστή '' == '' αλλά µε την συνάρτηση strcmp(). - Υπάρχει αλγοριθµικό λάθος στη συνάρτηση find_book. Δες την αντίστοιχη λύση. 0007 Page 2

0008 0009 0010 0011 0012 0013 0014 -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. - Ο αριθµός των συνθηκών στη συνάρτηση find_book θα µπορούσε να µειωθεί. Δες την αντίστοιχη λύση. - if (m = 3) σύγκριση όχι ανάθεση. Μην αγνοείς τα warnings του compiler - έχεις και τα δύο return µέσα στη for, οπότε ελέγχει µόνο το πρώτο στοιχείο και µετά επιστρέφει - στo βιβλίο σύγκρισης διαβάζεις πρώτα τον συγγραφέα ενώ στη getdata πρώτα τον τίτλο - Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. Τι είναι το m? ok Page 3

0015 0016 -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Δεν ακολουθείς τις οδηγίες εκφώνησης της άσκησης. Η κλήση των συναρτήσεων στην main() δεν γίνεται µε την σειρά που ζητείται. -Στην συνάρτηση find_book() θα µπορούσες να κάνεις return 1; κατευθείαν µέσα στην if που συγκρίνεις τα 3 πεδία σου. Έτσι, δεν θα χρειάζονταν η if µέσα στο loop και επιπλέον θα µείωνες και το υπολογιστικό φόρτο του συστήµατος. οριακά -Δεν τυπώνεις το AVAILABILITY. -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. 0017 0018 0019 0020 οριακά -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Οι δυνατές τιµές που µπορεί να έχει ένα βιβλίο είναι:available, RESERVED, LOST. Γιατί εσύ εκτυπώνεις available και not available? -Δεν υπάρχουν επαρκή σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) -Το πρόγραµµα σου δεν κάνει compile. -Συντακτικά λάθη (η printf() δεν συντάσσεται έτσι!) -Βασικά λάθη σε συναρτήσεις. Διάβασε καλά την θεωρία! --Πρόσεχε τις παραµέτρους που δίνεις στην συνάρτηση find_book(). -Άσχηµη στοίχιση. -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Page 4

0021 0022 0023 0024 - στη main στη scanf δε χρησιµοποιείς τον τελεστή. για να αναφερθείς στα πεδία του book, αλλά δηλώνεις καινούργιες µεταβλητές. Θα έπρεπε να το χρησιµοποιήσεις όπως φαίνεται στην συνάρτηση getdata - στo βιβλίο σύγκρισης διαβάζεις πρώτα τον τίτλο ενώ ση getdata πρώτα τον συγγραφέα if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum οριακά - έχεις και τα δύο return µέσα στη for, οπότε ελέγχει µόνο το πρώτο στοιχείο και µετά επιστρέφει if(books[i].availability == AVAILABLE) κ.ο.κ. Και οι τιµές που θα έπρεπε να τυπώνονται είναι AVAILABLE, RESERVED και LOST και όχι available και not available if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum - Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. Τι είναι το k? -Το πρόγραµµα σου δεν κάνει compile. Γενικά, υπάρχουν λάθη που αναφέρονται σε ύλη προηγούµενων εργαστηρίων. -Βασικά λάθη σε συναρτήσεις. Διάβασε καλά την θεωρία. -Η συνάρτηση find_book() είναι τύπου int. Που δηλώνεται αυτό που επιστρέφει µέσα στην main()? -Η σύγκριση 2 αλφαριθµητικών γίνεται µε την χρήση της συνάρτησης strcmp() και όχι µε = -Στην συνάρτηση find_book() έπρεπε η return 0; να ήταν έξω από την for. Μην ξεχνάς ότι πρέπει να επιστρέφεις 0 αφού πρώτα ελέγξεις όλα σου τα βιβλία! -Άσχηµη στοίχιση. -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Page 5

0025 οριακά - χρησιµοποιείς έξτρα παράµετρο τη flag στη find book η οποία δε χρειάζεται και επιπλέον όταν καλείς τη συνάρτηση δεν έχεις αρχικοποιήσει την flag - στo βιβλίο σύγκρισης διαβάζεις πρώτα τον τίτλο ενώ στη getdata πρώτα τον συγγραφέα, µε αποτέλεσµα ακόµα κι αν υπάρχει βιβλίο να µην το βρίσκεις if(books[i].availability == AVAILABLE) κ.ο.κ. 0026 0027 0028 οριακά -Το πρόγραµµα σου δεν λειτουργεί σωστά για την συνάρτηση find_book(). Η strcmp() επιστρέφει έναν ακέραιο και όχι έναν χαρακτήρα. -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) οριακά -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Καλό θα ήταν οι συναρτήσεις που καλούνται στην main() να υλοποιούνται κάτω από την main(). Έτσι ο κώδικας σου είναι πιο ευανάγνωστος. -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) οριακά -Εκτύπωση περιττών µηνυµάτων! -Τα στοιχεία δεν εκτυπώνονται µε την µορφή που ζητείται. -Το output αρχείο σου δεν ταιριάζει µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Page 6

0030 πολύ οριακά - σύγκριση µεταξύ συµβολοσειρών κάνουµε µε την strcmp όχι µε == - Μην αφήνεις τόσο µεγάλα κενά ανάµεσα στις συναρτήσεις 0031 0032 -Το πρόγραµµα σου δεν κάνει compile. Πολλά λάθη που δεν θα έπρεπε να τα κάνεις. -Στην if η συνθήκη θέλει ==, όχι =. Αυτό έπρεπε να το ξέρεις εδώ και καιρό. Υπήρχε και σχετικό warning στο compile. -Όταν χρησιµοποιείς την συνάρτηση strcmp πρέπει να κάνεις include την βιβλιοθήκη string.h -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. -Διόρθωσε την στοίχισή σου! 0032 0033 0034 -Δεν υπάρχουν επαρκή σχόλια! Δεν ακολουθείς ακριβώς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο. (Διάβασε καλά το φυλλάδιο!) - compilation errors - θα έπρεπε να αναφέρεσαι στα στοιχεία της δοµής nameofvariablestruct.element και όχι element σκέτο - για να συγκρίνεις δύο struct πρέπει να συγκρίνεις ένα ένα τα πεδία τους 0035 0036 Page 7

0037 - Η σύνταξη των τριών εντολών scanf στην συνάρτηση main είναι λανθασµ Γι' αυτό σε ενηµερώνουν τα τρία πρώτα warnings. Το δεύτερο όρισµα στις εντολές δεν µπορεί να είναι µία µεταβλητή τύπου δοµής. Αντί αυτού, θα έπρ να χρησιµοποιήσεις τα αντίστοιχα πεδία από την µεταβλητή newbook ώστε αρχικοποιήσεις κατάλληλα. - Η συνάρτηση find_book δεν έχει υλοποιηθεί σωστά. Η εντολή '' else '' είναι λανθασµένη καθώς, σε περίπτωση που δεν βρεις το βιβλίο στην πρώ θέση του πίνακα, επιστρέφεις την τιµή 0. Η µη εύρεση του βιβλίου στην πρ θέση δεν αποκλείει την ύπαρξη αυτού σε κάποια άλλη θέση. Εποµένως, η '' return(0) '' θα έπρεπε να βρίσκεται έξω από την εντολή '' for ''. - Προσοχή στην στοίχιση. 0038 0638 -Το πρόγραµµα σου δεν κάνει compile. Πολλά λάθη που δεν θα έπρεπε να τα κάνεις. -Δεν ξέρεις να καλείς σωστά συναρτήσεις. -Δεν ξέρεις να συντάσσεις σωστά πρωτότυπα συναρτήσεων. -Η if δεν συντάσσεται έτσι. -Οι συναρτήσεις που έφτιαξες δεν κάνουν αυτά που ζητάει η εκφώνηση. -Διάβασε καλά την θεωρία. 1043 1067 1187 Αντί για if(books[i].availability == 1) θα ήταν καλύτερα if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτό χρησιµοπούµε enum - Καλή δουλειά 1188 Page 8

1189 1190 1191 1192 1193 1072 1073 1074 -Γιατί τυπώνεις RESERVER αντί για RESERVED; -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. οριακά - η find book επιστρέφει 0 και 1 ως χαρακτήρες σε µορφή ακεραίου (η ακέραια τιµή τους δηλαδή δεν είναι 0 ή 1 αλλά κάτι άλλο (η ASCII κωδικοποίησή τους) πχ 48 - καλείς τη find book δύο φορές τη µία για να την ελέγξεις στην if, για ποιό λόγο? Μόνο η δεύτερη χρειάζεται if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum -Το πρόγραµµα σου δεν λειτουργεί σωστά. Ενώ το βιβλίο υπάρχει στην λίστα δεν το βρίσκει και εµφανίζει NOT FOUND. -H scanf() δεν συντάσσεται έτσι όταν διαβάζουµε έναν ακέραιο! -Δεν ακολουθείς τις οδηγίες εκφώνησης της άσκησης. Για την διαθεσιµότητα έπρεπε να εκτυπώνεται η λέξη, όχι η ακέραια τιµή. -Στην συνάρτηση find_book() δεν πρέπει να επιστρέφεις return 2; Για ποιο λόγο το κάνεις? Δεν ζητούνταν κάτι τέτοιο! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Page 9

1075 -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Πρόσεχε την στοίχιση. -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. 1076 1077 - Δεν υπάρχει εντολή scanf στη συνάρτηση main για την λήψη του ακεραίου που περιγράφει την κατάσταση του βιβλίου. - Αντί της ακέραιας τιµής που περιγράφει την κατάσταση του βιβλίου, θα ήταν καλ να εκτυπώνεις το αντίστοιχο αλφαριθµητικό. 1078 πολύ οριακά - βγαίνεις εκτός ορίων πίνακα (< όχι <=) και to for σου τυπώνει σκουπίδια 1079 1080 if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτο χρησιµοποιούµε enum - καλύτερο format στο output - καλύτερη στοίχιση - Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών.τι είναι d1? -Λάθος αποτελέσµατα. -Τα σχόλια είναι λίγα και δεν βοηθάνε πολύ. Διάβασε το φυλλάδιο. 1081 1082 Page 10

1083 1084 1085 1086 - Το πρωτότυπο της συνάρτησης print_books δεν είναι το ίδιο στην δήλωση και στον ορισµό αυτής. Αυτό έχει ως αποτέλεσµα να εµφανίζεται το τελευταίο error. - Το πρόγραµµα δεν κάνει compile λόγω λάθους στη συνάρτηση find_book. Η µεταβλητή book δεν είναι πίνακας οπότε δεν µπορείς να την δεικτοδοτήσεις. - Υπάρχει αλγοριθµικό λάθος στη συνάρτηση find_book. Δες την αντίστοιχη λύση - Στις δύο πρώτες εντολές printf της συνάρτησης print_books το προσδιοριστικό εύρους είναι περιττό. - Το αποτέλεσµα που επιστρέφεται από την συνάρτηση find_book µετά την κλήση αυτής στην main δεν αποθηκεύεται σε κάποια µεταβλητή µε αποτέλεσµα να µην µπορείς να το χρησιµοποιήσεις. - Προσοχή στην στοίχιση. - Η λογική της συνάρτησης find_book θα µπορούσε να απλοποιηθεί εάν ήλεγχες για ισότητα µεταξύ των εκάστοτε πεδίων. Έτσι, θα µπορούσες να µειώσεις τον αριθµό των ελέγχων που πραγµατοποιούνται. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται µε αυτά του αντίστοιχου φυλλαδίου. Αντί για if(books[i].availability == 1) θα ήταν καλύτερα if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτό χρησιµοπούµε enum - καλό που χρησιµοποιείς switch case αλλά θα ήταν καλύτερα αντί για 1 2 3 να χρησιµοποιείς AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum Page 11

1087 1088 1089 - Έχεις δηλώσει λάθος την υπογραφή της συνάρτησης find_book. Η δεύτερη παράµετρος δεν θα έπρεπε να είναι τύπου πίνακα. Tο λάθος που εµφανίζεται κατά το compilation οφείλεται στο ότι περνάς ως δεύτερο όρισµα στην κλήση της συνάρτησης µία µεταβλητή που δεν είναι τύπου δείκτη. - Στις εντολές scanf στη συνάρτηση main για την αρχικοποίηση του βιβλίου προς αναζήτηση θα έπρεπε να διαβάζεις πρώτα τον συγγραφέα και έπειτα τον τίτλο καθώς αυτή είναι και η µορφή του αρχείου εισόδου. - Προσοχή στην στοίχιση. -Δεν υπάρχουν επαρκή σχόλια! - Τα λανθασµένα αποτελέσµατα στην αναζήτηση οφείλονται στο γεγονός ότι στις εντολές scanf στη συνάρτηση main για την αρχικοποίηση του βιβλίου προς αναζήτηση πρώτα διαβάζεις τον τίτλο του βιβλίου και έπειτα το όνοµα του συγγραφέα. Αντί αυτού, θα έπρεπε να διαβάζεις πρώτα τον συγγραφέα και έπειτα τον τίτλο καθώς αυτή είναι και η µορφή του αρχείου εισόδου. - Προσοχή στην στοίχιση. Οι αγκύλες '}' πρέπει να είναι στην ίδια στήλη µε την εντολή που '' κλείνουν ''. 1090 1091 1092 Page 12

1093 1094 1095 - Αν είχες τη συνθήκη στο for έτσι(i<numbooks && ans=!1) θα δούλευε για το in1.txt - Αντί για if (ans==1) καλύτερα if (ans==availale) κ.ο.κ Γι'αυτό χρησιµοπούµε enum -Το πρόγραµµα σου δεν κάνει compile. Πολλά λογικά και συντακτικά λάθη που αναφέρονται σε ύλη προηγούµενων εργαστηρίων.(π.χ. η scanf() δεν συντάσσεται έτσι όταν διαβάζουµε ένα αλφαριθµητικό) -Βασικά λάθη σε συναρτήσεις. Διάβασε καλά την θεωρία! -Πρόσεχε πολύ την στοίχιση! -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) -Εκτυπώνεις πολλά περιττά µηνύµατα! Να διαβάζεις πιο προσεκτικά την εκφώνηση! -Τα σχόλια είναι λίγα και δεν βοηθάνε πολύ. Διάβασε το φυλλάδιο. 1096 1097 -Το πρόγραµµα σου δεν λειτουργεί σωστά. Ενώ το βιβλίο υπάρχει στην λίστα δεν το βρίσκει και εµφανίζει NOT FOUND. - O χρήστης πρέπει να δίνει πρώτα τον συγγραφέα και µετά τον τίτλο. -Στην συνάρτηση find_book() έπρεπε η return 0; να ήταν έξω από την for. Μην ξεχνάς ότι πρέπει να επιστρέφεις 0 αφού πρώτα ελέγξεις όλα σου τα βιβλία! -Στην συνάρτηση find_book() δεν πρέπει να επιστρέφεις return -2; Για ποιο λόγο το κάνεις? -Δεν εκτυπώνεται σωστά η διαθεσιµότητα του βιβλίου (πρόσεχε την δοµή της if()). -Το output αρχείο σου δεν ταιριάζει µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Δεν υπάρχουν επαρκή σχόλια! Page 13

1098 - Το πρόγραµµα δεν έκανε compile λόγω λάθους στην δεύτερη εντολή include. Το header file για την χρήση της συνάρτησης strcmp είναι το string.h. - Η σύνταξη και η χρήση της συνάρτησης strcmp είναι λανθασµένες. Θα πρέπει να ανατρέξεις στο αντίστοιχο manual καθώς επίσης και στα αντίστοιχα παραδείγµα - Δεν έχει υλοποιηθεί το µεγαλύτερο µέρος από την ζητούµενη λειτουργικότητα. Η λογική της συνάρτησης find_book και της συνάρτησης print_books είναι λανθασµ Επίσης, δεν υπάρχουν οι κατάλληλες εντολές στην main για λήψη των στοιχείων του βιβλίου προς αναζήτηση από τον χρήστη. Εποµένως, δεν πραγµατοποιείται αρχικοποίηση των πεδίων της µεταβλητής book. Δες την αντίστοιχη λύση. 1099 1100 1101 1102 πολύ οριακά - στην print books γιατί κάνεις scanf? Μόνο να τυπώνει θα έπρεπε και εκτός αυτού τα δεδοµένα τα παίρνεις την είσοδο και τα αποθηκεύεις µε την get data - να σχολιάζεις τι κάνουν οι συναρτήσεις σου if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. Page 14

1103 1104 1105 -Το πρόγραµµα σου δεν κάνει compile. Γενικά, υπάρχουν λάθη που αναφέρονται σε ύλη προηγούµενων εργαστηρίων (Λείπουν ;,δεν δηλώνεις όλες τις µεταβλητές σου κτλ) -Βασικά λάθη σε συναρτήσεις. Διάβασε καλά την θεωρία. -Στην συνάρτηση find_book() έπρεπε η return 0; να ήταν έξω από την for. Μην ξεχνάς ότι πρέπει να επιστρέφεις 0 αφού πρώτα ελέγξεις όλα σου τα βιβλία! -Άσχηµη στοίχιση. -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum οριακά - το else{return 0;} δε πρέπει να είναι µέσα στο for γιατί αν δε βρεί το πρώτο βιβλίο τότε επιστρέφει 0 και δεν ελέγχει τα υπόλοιπα - θα έπρεπε να διαβάσεις πρώτα τον τίτλο και µετά τον συγγραφέα στο βιβλίο σύγκρισης - Άσχηµη στοίχιση 1106 1107 1108 1109 - Η συνθήκη στην δεύτερη εντολή if της συνάρτησης find_book θα έπρεπε να ελέγχει για τον τίτλο και όχι για το όνοµα του συγγραφέα. Αυτό δικαιολογεί και τα λανθασµένα αποτελέσµατα του προγράµµατος. Page 15

1110 1111 1112 1113 οριακά -Το πρόγραµµα σου δεν λειτουργεί σωστά. Αυτό οφείλεται σε λογικό λάθος που έχει γίνει στην if() της συνάρτησης find_book(). -Δεν ακολουθείς τις οδηγίες εκφώνησης της άσκησης. Η συνάρτηση print_books δεν επιστρέφει κάτι, οπότε έπρεπε να είχε δηλωθεί ως void. -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 40 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%40s", biblio.author); - Δεν ακολουθείς ακριβώς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) - Τα λανθασµένα αποτελέσµατα στην αναζήτηση οφείλονται στο γεγονός ότι στις εντολές scanf στη συνάρτηση main για την αρχικοποίηση του βιβλίου προς αναζήτηση πρώτα διαβάζεις τον τίτλο του βιβλίου και έπειτα το όνοµα του συγγραφέα. Αντί αυτού, θα έπρεπε να διαβάζεις πρώτα τον συγγραφέα και έπειτα τον τίτλο καθώς αυτή είναι και η µορφή του αρχείου εισόδου. -Εµφανίζονται warnings που έπρεπε να είχαν διορθωθεί. -Το πρόγραµµα σου δεν λειτουργεί σωστά. -Βασικά λάθη σε συναρτήσεις. Δεν δηλώνεις τα πρωτότυπα των συναρτήσεων σου! -Η σύγκριση 2 αλφαριθµητικών γίνεται µε την χρήση της συνάρτησης strcmp() και όχι µε = -Στην συνάρτηση find_book() έπρεπε η return 0; να ήταν έξω από την for. Μην ξεχνάς ότι πρέπει να επιστρέφεις 0 αφού πρώτα ελέγξεις όλα σου τα βιβλία! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτό χρησιµοπούµε enum - καλύτερο format στο output Page 16

1114 1115 - Έχεις ξεχάσει τον τελεστή & στο δεύτερο όρισµα της τρίτης εντολής scanf στη συνάρτηση main µε αποτέλεσµα να προκαλείται segmentation fault. Για το λάθος αυτό σε ενηµέρωνε το πρώτο warning. Η σύνταξη της scanf έχει καλυφθεί στα προηγούµενα εργαστήρια. - Η κλήση της συνάρτησης find_book είναι περιττή καθώς αυτή καλείται στην επόµενη γραµµή. οριακά -Δεν ακολουθείς τις οδηγίες εκφώνησης της άσκησης. Για κάθε βιβλίο πρέπει να εκτυπώνεται: AUTHOR: όνοµα συγγραφέα TITLE: τίτλος AVAILABILITY: διαθεσιµότητα Εσύ εκτυπώνεις : AUTHOR: τίτλος TITLE: όνοµα συγγραφέα AVAILABILITY: διαθεσιµότητα -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Εκτύπωση περιττών µηνυµάτων! -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. Page 17

1116 lab7 - Το πρόγραµµα δεν έκανε compile λόγω λάθους στον τύπο της δοµής. Αντί του bookinfot χρησιµοποιούσες το όνοµα bookinfot µε αποτέλεσµα να µην αναγνωρίζονται οι αντίστοιχες µεταβλητές. - Η σύνταξη των τριών εντολών scanf στη συνάρτηση main είναι λανθασµένη. Το αλφαριθµητικό formatstring δεν θα έπρεπε να δίνεται ως κυριολεκτικό. Για την χρήση αυτού µπορείς να δεις την συνάρτηση get_data. Επίσης, στην τρίτη εντολή scanf έχεις ξεχάσει τον τελεστή & στο δεύτερο όρισµα µε αποτέλεσµα να υπάρχει πιθανότητα πρόκλησης segmentation fault. - Η συνάρτηση find_book δεν έχει υλοποιηθεί σωστά. Η εντολή '' return(0) '' εντός της δοµής for είναι λανθασµένη καθώς, σε περίπτωση που δεν βρεις το βιβλίο στην πρώτη θέση του πίνακα, επιστρέφεις την τιµή 0. Η µη εύρεση του βιβλίου στην πρώτη θέση δεν αποκλείει την ύπαρξη αυτού σε κάποια άλλη θέση. Εποµένως, η εντολή '' return(0) '' θα έπρεπε να βρίσκεται έξω από την εντολή '' for - Το τρίτο πεδίο της δοµής bookinfot δεν έχει όνοµα statust αλλά availability. - Η συνάρτηση strcmp χρησιµοποιείται µόνο για την σύγκριση αλφαριθµητικών. Εποµένως, η τρίτη κλήση αυτής στη συνάρτηση find_book δεν είναι σωστή. 1117 1118 1119 1120 -Το πρόγραµµα σου δεν κάνει compile. Έπρεπε να είσαι σε θέση να διορθώσεις το λάθος σου. OK καλά σχόλια και χρησιµοποιείς και switch case που εδώ ταιριάζει Page 18

1121 1122 1123 1124 οριακά -Το πρόγραµµα σου δεν λειτουργεί σωστά. Ενώ το βιβλίο υπάρχει στην λίστα δεν το βρίσκει και εµφανίζει NOT FOUND. - O χρήστης πρέπει να δίνει πρώτα τον συγγραφέα και µετά τον τίτλο. -Στην συνάρτηση find_book() έπρεπε η return 0; να ήταν έξω από την for. Μην ξεχνάς ότι πρέπει να επιστρέφεις 0 αφού πρώτα ελέγξεις όλα σου τα βιβλία! -Το output αρχείο σου δεν ταιριάζει µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. -Δεν υπάρχουν επαρκή σχόλια! οριακά - Η σειρά κλήσης των διαφόρων συναρτήσεων στη συνάρτηση main είναι λανθασµένη. Επί παραδείγµατι, η συνάρτηση get_data θα έπρεπε να καλείται πριν την συνάρτηση print_books ώστε ο αντίστοιχος πίνακας να έχει αρχικοποιηθεί. Δες την αντίστοιχη λύση. - Η συνάρτηση find_book θα έπρεπε να επιστρέφει την τιµή ' 1 ' σε περίπτωση που το βιβλίο υπάρχει και όχι να εκτυπώνει αντίστοιχο µήνυµα. Η εκτύπωση του µηνύµατος θα έπρεπε να γίνεται στη συνάρτηση main. - Το προσδιοριστικό για το εύρος πεδίου στις συναρτήσεις printf που καλούνται εντός της συνάρτησης find_book είναι περιττό. - Προσοχή στην στοίχιση. OK οριακά -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Δεν ακολουθείς τις οδηγίες εκφώνησης της άσκησης. Η κλήση των συναρτήσεων στην main() δεν γίνεται µε την σειρά που ζητείται. Γιατί την συνάρτηση find_book() την καλείς 2 φορές? 1125 Page 19

1126 1127 1128 1129 οριακά -Για την διαθεσιµότητα του βιβλίου εκτυπώνεις µόνο την λέξη AVAILABLE. -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) οριακά - έχεις και τα δύο return µέσα στη for, οπότε ελέγχει µόνο το πρώτο στοιχείο και µετά επιστρέφει. Γενικά δε χρειάζονται τόσα return. Δες τη λύση if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτό χρησιµοπούµε enum -Το return 0; έπρεπε να είναι έξω από την for. Όπως το έχεις, επιστρέφει 0 αν το πρώτο στοιχείο δεν είναι αυτό που ψάχνουµε. -Πολύ καλά τα σχόλια που βάζεις αλλά προσπάθησε να ακολουθείς τις οδηγίες του φυλλαδίου. -Διόρθωσε την στοίχισή σου! -Πολύ καλά τα σχόλια που βάζεις αλλά προσπάθησε να ακολουθείς τις οδηγίες του φυλλαδίου. 1130 1131 οριακά -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. -Δεν υπάρχουν επαρκή σχόλια! Δεν ακολουθείς ακριβώς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο. (Διάβασε καλά το φυλλάδιο!) 1132 Page 20

1133 - Προσοχή στην στοίχιση. 1134 1135 1136 1137 πολύ οριακά - compilation warnings. Μην τα αγνοείς - scanf("%39s",&biblio.onoma_syggrafea) δε θέλει & -if (biblia[i].diathesimotita=book.diathesimotita) σύγκριση όχι ανάθεση - καλύτερο φορµάτ όταν τυπώνεις την έξοδο - Τα σχόλια συναρτήσεων µπαίνουν πριν τη συνάρτηση -Το πρόγραµµα σου δεν κάνει compile! -Δεν υλοποιείς σωστά τις συναρτήσεις σου. -Δεν ακολουθείς τις οδηγίες εκφώνησης της άσκησης! -Δες την λύση της άσκησης. -Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) οριακά - if (sigkrisi1 <= 0 && sigkrisi2 <= 0 ) θα έπρεπε να είναι ==0, πρόσεξε τί τιµές επιστρέφει η strcmp - στo βιβλίο σύγκρισης διαβάζεις πρώτα τον τίτλο ενώ ση getdata πρώτα τον συγγραφέα, µε αποτέλεσµα ακόµα κι αν υπάρχει βιβλίο να µην το βρίσκεις if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum Page 21

1138 1139 οριακά - Η µεταβλητή book δεν είναι πίνακας για να την αρχικοποιείς NUMBOOKS φορές, οπότε τα αποτελέσµατα στην findbook, σου βγαίνουν λάθος if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτό χρησιµοποιούµε enum - να σχολιάζεις τι κάνουν οι συναρτήσεις σου 1140 1141 1142 οριακά -Δεν ακολουθείς τις οδηγίες εκφώνησης της άσκησης. Η συνάρτηση print_books δεν επιστρέφει κάτι, οπότε έπρεπε να είχε δηλωθεί ως void. -Πρόσεχε λίγο την στοίχιση. -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum - Πρόσεχε τη στοίχιση 1143 Page 22

1144 1145 1146 -Στην συνάρτηση find_book() θα µπορούσες να κάνεις return 1; κατευθείαν µέσα στην if που συγκρίνεις τα 3 πεδία σου. Έτσι όπως το έχεις αυξάνεις το υπολογιστικό φόρτο του συστήµατος. -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. -Πρόσεχε την στοίχιση! -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) -Όταν βάζεις βοηθητικά printf (π.χ. dn mphke, mphke) να τα σβήνεις πριν παραδόσεις τον κώδικα! -Η λέξη RESERVED έπρεπε να είναι µε κεφαλαία, όχι µε µικρά. -Δεν έχεις βάλει καθόλου σχόλια. Διάβασε το φυλλάδιο. 1147 1148 -Οι scanf("%c", lib.author); και scanf("%c", lib.title); θέλανε %s, όχι %c! -To continue δεν χρειαζόταν. -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. Page 23

1149 1150 - Έχεις ξεχάσει τον τελεστή & στο δεύτερο όρισµα της τρίτης εντολής scanf στη συνάρτηση main µε αποτέλεσµα να προκαλείται segmentation fault. Για το λάθος αυτό σε ενηµέρωνε το πρώτο warning. - Καθώς για τα αλφαριθµητικά στην stuct bookinfot έχει δεσµευτεί χώρος για 40 χαρακτήρες, στις εντολές scanf της συνάρτησης main, θα έπρεπε να διαβάζεις µέχρι 39 χαρακτήρες. - Ο χώρος που έχει δεσµευτεί για τον πίνακα books είναι 5 στοιχεία. στη συνάρτηση print_books προσπελαύνεις 40 στοιχεία µε αποτέλεσµα την πρόσβαση σε θέσεις µνήµης, ενδεχοµένως, δεν ανήκουν στο πρόγραµµά σου. Αυτό µπορεί να προκαλέσει segmentation fault σε αυτό το λάθος οφείλονται τα λανθασµένα αποτελέσµατα κατά την εκτύπωση. - Προσοχή στην στοίχιση. Οι αγκύλες '}' πρέπει να είναι στην ίδια στήλη µε την εντολή που '' κλείνουν ''. -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. 1151 1152 οριακά -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Στην συνάρτηση find_book() θα µπορούσες να κάνεις return 1; κατευθείαν µέσα στην if που συγκρίνεις τα 3 πεδία σου. Έτσι, δεν θα χρειάζονταν η if µετά το loop και θα µείωνες και το υπολογιστικό φόρτο του συστήµατος. -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) 1153 1154 Page 24

1155 οριακά -Η συνάρτηση find_book είναι λάθος. Επιστρέφει πάντα 1 όπως την έχεις. Προσπάθησε να καταλάβεις το λάθος σου. Δες τι τιµή παίρνει κάθε φορά η µεταβλητή res. -Διόρθωσε την στοίχισή σου! 1156 1157 οριακά -Εκτυπώνεις µόνο το AUTHOR και καθόλου το TITLE και το AVAILABILITY. -Έπρεπε να τυπώνεις FOUND και όχι FOUNT! 1158 1159 1160 1161 - Υπάρχει αλγοριθµικό λάθος στη συνάρτηση find_book. Η συνάρτηση strcmp επιστρέφει την τιµή 0 σε περίπτωση που τα δύο αλφαριθµητικά είναι ίδια. Εποµένω θα έπρεπε να υπάρχει ένας έλεγχος για ισότητα µε το µηδέν της τιµή επιστροφής τ συνάρτησης. Δες την αντίστοιχη λύση. if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτο χρησιµοποιούµε enum - δε σχολιάζεις τι κάνουν οι συναρτήσεις σου, σχόλια τύπου" κλήση της συνάρτησης τάδε" δε χρειάζονται γιατί δεν προσφέρουν κάποια πληροφορία. Διάβασε το φυλλάδιο σχολιασµού -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου! Page 25

1162 - Το πρόγραµµα δεν κάνει compile λόγω έλλειψης µίας αγκύλης '}' στην γραµµή 62. Το λάθος ήταν εύκολα ορατό εάν το πρόγραµµα είχε την σωστή στοίχιση. - Υπάρχουν λάθη σχετικά µε τον ορισµό, την κλήση και την αποθήκευση της τιµής επιστροφής από συνάρτηση. Αυτά αποτελούν ύλη προηγουµένων εργαστηρί - Η σύγκριση για λεξικογραφική ισότητα µεταξύ αλφαριθµητικών δεν γίνεται µε το τελεστή '' == '' αλλά µε την συνάρτηση strcmp(). - Υπάρχουν αλγοριθµικά λάθη στις συναρτήσεις find_book και print_books. Δεν τ αντίστοιχη λύση. 1163 1164 1165 1166 1167 1168 - Για την ανάγνωση αλφαριθµητικών µε χρήση της συνάρτησης scanf χρησιµοποιε το προσδιοριστικό '' %s '' και όχι το προσδιοριστικό '' %c ''. Επίσης, για την ανάγνω ακεραίων δεν χρησιµοποιείται προσδιοριστικό εύρους. - Η συνάρτηση get_data λαµβάνει µόνο ένα όρισµα. Το error κατά το compilation σε ενηµερώνει για το λάθος αυτό. - Η ανάγνωση των στοιχείων του βιβλίου προς αναζήτηση θα έπρεπε να γίνεται στη συνάρτηση main και όχι στη συνάρτηση get_data. - Το παραδοτέο αρχείο θα έπρεπε να λέγεται lab7.c - Προσοχή στην στοίχιση. 1169 Page 26

1170 1171 1172 1173 if(books[i].availability == AVAILABLE) κ.ο.κ. Γι'αυτό χρησιµοπούµε enum - Πρόσεχε λίγο τη στοίχιση -Το return 0; έπρεπε να είναι έξω από την for. Όπως το έχεις, επιστρέφει 0 αν το πρώτο στοιχείο δεν είναι αυτό που ψάχνουµε. -Πολύ καλά τα σχόλια που βάζεις αλλά προσπάθησε να ακολουθείς τις οδηγίες του φυλλαδίου. -Διόρθωσε την στοίχισή σου! Τα {} δεν έχουν καµία λογική! - Το πρόγραµµα δεν κάνει compile καθώς το όρισµα στη συνάρτηση get_data έχει όνοµα books ενώ εσύ το χρησιµοποιείς µε το όνοµα book. - Στις τρεις κλήσεις της εντολής scanf στη συνάρτηση main θα έπρεπε να χρησιµοποιείς την µεταβλητή book και όχι την µεταβλητή books. Επιπλέον, η µεταβλητή i δεν έχει αρχικοποιηθεί οπότε ενδέχεται να προσπελαύνεις θέσεις µνήµης που δεν σου ανήκουν. - Η εκτύπωση των πληροφοριών για κάθε βιβλίο στη συνάρτηση print_books δεν είναι σωστή. Δες την αντίστοιχη λύση. - Προσοχή στην στοίχιση. Οι αγκύλες '}' πρέπει να είναι στην ίδια στήλη µε την εντολή που '' κλείνουν ''. 1174 1175 Page 27

1176 1177 -Το πρόγραµµα σου δεν κάνει compile. Πολλά λάθη που δεν θα έπρεπε να τα κάνεις. -Δεν ξέρεις να καλείς σωστά συναρτήσεις. -Δεν ξέρεις να συντάσσεις σωστά πρωτότυπα συναρτήσεων. -Οι συναρτήσεις δεν δηλώνονται η µία µέσα στην άλλη! -Δεν δηλώνεις όλες τις µεταβλητές που χρησιµοποιείς! -Διόρθωσε την στοίχισή σου! Τα {} δεν έχουν καµία λογική! -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. -Διάβασε καλά την θεωρία. -exist==find_book( books, zitoumeno_vivlio); ανάθεση έπρεπε να κάνειςόχι σύγκριση - οι συµβολοσειρές συγκρίνονται µε strcmp, οχι µε == -Segmantation fault 1178 1179 1180 οριακά -Το output αρχείο σου δεν ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. Από την επόµενη φορά πρέπει να ταιριάζει ακριβώς! -Δεν ακολουθείς ακριβώς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) 1181 1182 1183 Page 28

1184 1185 1186 -Η scanf() δεν συντάσσεται έτσι! -Το πρόγραµµα σου δεν δουλεύει σωστά! -Στην συνάρτηση find_book() έπρεπε η return 0; να ήταν έξω από την for. Μην ξεχνάς ότι πρέπει να επιστρέφεις 0 αφού πρώτα ελέγξεις όλα σου τα βιβλία! -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) - στo βιβλίο σύγκρισης διαβάζεις πρώτα τον τίτλο ενώ ση getdata πρώτα τον συγγραφέα, µε αποτέλεσµα ακόµα κι αν υπάρχει βιβλίο να µην το βρίσκεις if(books[i].availability == AVAILABLE) κ.ο.κ. Γι αυτό χρησιµοποιούµε enum -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. Page 29