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

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

FAIL PASS PASS οριακά

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

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

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

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

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

403 FAIL Λάθος στο πακετάρισµα του αρχείου.

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

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

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

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

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

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

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

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

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

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

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

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

Sheet PASS 1426 PASS 1428 PASS. Page 1

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

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

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

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

to post PASS PASS FAIL

Στοίβες με Δυναμική Δέσμευση Μνήμης

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Εργαστήριο 5. Εαρινό Εξάμηνο

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

ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

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

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

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

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

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

Νήµατα. Πολύ σηµαντικό

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

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

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

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

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Κεφάλαιο : Επαναλήψεις (for, do-while)

Δομημένος Προγραμματισμός

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

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Προθεσµία: 9/1/2015, 22:00

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

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

Ενδεικτική περιγραφή μαθήματος

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

Transcript:

ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή 02109 FAIL Δεν ελήφθη άσκηση -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή 02111 - Προσέξτε τι αρχεία στέλνετε!! - Σωστά κάνετε έλεγχο αν η createlist επέστρεψε NULL. - Σωστή χρήση free για τον κόµβο που πρέπει να αφαιρεθεί. -Σωστός υπολογισµός τον κόµβων που πρέπει να αφαιρεθούν σε κάποια σενάριο 02113 -Σωστά malloc και τα next/prev να δείχνουν στην κεφαλή -Δεν εισάγετε σωστά το κόµβο στην νέα λίστα -Δεν ελέγχετε αν η creatlist επέστρεψε NULL ώστε να τερµατίζετε το πρόγραµµα σε αυτή τη. -Σωστή εύρεση σηµείου στο οποίο θα προστεθεί ο κόµβος,σωστή malloc αλλά δεν εισάγετε σωστά τους κόµβους. Ενώνετε το κόµβο µε το προηγούµενο και επόµενο κόµβο του current µε αποτέλεσµα να εισάγετε το νέο κόµβο στη θέση του current, η άσκηση δεν ζητούσε να γίνετε αντικατάσταση κόµβου. -Σωστά η συνάρτηση επιστρέφει το πλήθος κόµβων που προστέθηκαν. -Σωστές κλήσεις συναρτήσεων -Σωστή διαγραφή όλων των κόµβων. 02115 02116 - Πριν προσπελάσετε το argv πρέπει να ελέγχετε το argc. - Λάθος χειρισµός στην απελευθέρωση µνήµης. Κάνετε free(current) και στην αµέσως επόµενη επανάληψη υπολογίζετε το current->next. Έπρεπε να είχατε αποθηκεύσει σε βοηθητική µεταβλητή το current->next πριν γίνει το free, και µετά να χρησιµοποιήσετε αυτή τη µεταβλητή. Είναι λάθος να προσπελάσετε ελευθερωµένη µνήµη. - Στη move δε βάζετε σωστά τους δείκτες. Ο last_node δε χρειάζεται καν. Μπορείτε να χρησιµοποιήσετε το head->prev στη θέση του. Σχεδιάστε τη λίστα σας στο χαρτί, και µετά προσπαθήστε πάλι να φτιάξτε τους δείκτες. - Σωστή main. - Σωστός ο έλεγχος για το αν επιστρέφει η createlist NULL τιµή. - Σωστή η εύρεση του κόµβου προς αφαίρεση. - Κάνετε προσπέλαση του current (στο current->next) αφότου έχει γίνει free. Αυτό είναι λάθος. - Σωστή η κλήση των συναρτήσεων. - Η έξοδος του προγράµµατος είναι σωστή. - Σωστή η τοποθέτηση των clearlist για το head και το new_head. - Σωστή αρχικοποίηση της δεύτερης λίστας µέσα στη συνάρτηση. - Σωστή η τοποθέτηση των δεικτών στη νέα λίστα. - Η έξοδος του προγράµµατος είναι σωστή. Page 1

02121 - Σωστή δέσµευση δυναµικής µνήµης, µε έλεγχο της τιµής επιστροφής της malloc(). - Σωστή µεταφορά κόµβων στη νέα λίστα. - Σωστή επιστροφή της νέας λίστας. - Ο κώδικας ελέγχου για την τιµή του step θα µπορούσε να µπει στη main(), καθώς είναι κοινός και ελέγχει την εγκυρότητα της εισόδου του χρήστη. 02122 02123 - Προσέξτε τι αρχεία στέλνετε!! - Σωστά κάνετε έλεγχο αν η createlist επέστρεψε NULL. - Σωστή χρήση free για τον κόµβο που πρέπει να αφαιρεθεί. -Σωστός υπολογισµός τον κόµβων που πρέπει να αφαιρεθούν σε κάποια σενάριο -Σωστά malloc και τα next/prev να δείχνουν στην κεφαλή -Δεν εισάγετε σωστά το κόµβο στην νέα λίστα -Σωστά ελέγχετε αν η createlist εκτελέστηκε σωστά και τερµατίζετε το πρόγραµµα σε διαφορετική -Δεν βρίσκετε σωστά το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. Έχετε κάνει 2 λάθη. Το πρώτο είναι οτι την πρώτη φορά το βάζετε µια θέση µετα απο την επιθυµητή ενώ στη συνέχεια το αριθµό τον τοποθετείτε ανα µία θέση. -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή 02128 02129 FAIL Δεν ελήφθη άσκηση - Ολοκληρώστε τη δεύτερη άσκηση στο σπίτι. 02130 -Δεν ελέγχετε αν η creatlist επέστρεψε NULL ώστε να τερµατίζετε το πρόγραµµα σε αυτή τη. -Δεν εντοπίζετε σωστά το σηµείο που πρέπει να τοποθετηθεί ο κόµβος. Η άσκηση δε ζητούσε να τοποθετείτε κόµβο ανάµεσα σε κάθε ήδη υπάρχον κόµβο. -Σωστή malloc αλλά όταν επιστρέφει NULL πρέπει να τερµατίζει το πρόγραµµα. -Σωστές κλήσεις συναρτήσεων. -Δεν υλοποιείτε τη clearlist Page 2

02134 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή 02139 02140 02143 - Σωστός ο έλεγχος για το αν επιστρέφει η createlist NULL τιµή. - Σωστή η εύρεση του κόµβου προς αφαίρεση. - Κάνετε προσπέλαση του current (στο current->next) αφότου έχει γίνει free. Αυτό είναι λάθος. - Δεν επιστρέφεται το πλήθος των διεγραµµένων κόµβων. - Σωστή η κλήση των συναρτήσεων. - Η έξοδος του προγράµµατος είναι σωστή. - Ο έλεγχος της τιµής που επιστρέφει η createlist δεν είναι σωστός καθώς το πρόγραµµα θα έπρεπε να τερµατίζει. Η µεταβλητή assist δε χρειάζεται malloc εφόσον αµέσως µετά την βάζετε να δείχνει στο head. - Σωστά επιστρέφετε τον αριθµό των εισαγόµενων κόµβων στη main. - Σωστή αποδέσµευση κόµβων. - Ο έλεγχος της τιµής που επιστρέφει η createlist είναι σωστός. - Σωστά επιστρέφετε τον αριθµό των εισαγόµενων κόµβων στη main. - Στη σειρά 48 κάνετε για δεύτερη φορά αποδέσµευση ίδιου κόµβου µε αποτέλεσµα στην εκτέλεση να σας λέει Error in `./lab13': double free or corruption. 02144 -Δεν ελέγχετε αν η creatlist επέστρεψε NULL ώστε να τερµατίζετε το πρόγραµµα σε αυτή τη. -Σωστή εύρεση σηµείου στο οποίο θα προστεθεί ο κόµβος,σωστή malloc αλλά δεν εισάγετε σωστά τους κόµβους. Ενώνετε το κόµβο µε το προηγούµενο και επόµενο κόµβο του current µε αποτέλεσµα να εισάγετε το νέο κόµβο στη θέση του current, η άσκηση δεν ζητούσε να γίνετε αντικατάσταση κόµβου. -Σωστά η συνάρτηση επιστρέφει το πλήθος κόµβων που προστέθηκαν. -Σωστές κλήσεις συναρτήσεων -Σωστή διαγραφή όλων των κόµβων. Page 3

lab13grades 02145 - Πρώτα έπρεπε να ελέγχετε για έγκυρο αριθµό παραµέτρων (argc) και µετά να χρησιµοποιήσετε µε ασφάλεια το argv[]. - Δεν εκτυπώνετε στην main() τον αριθµό των κόµβων που αφαιρέθηκαν. - Δεν είναι απαραίτητη η χρήση δυο δοµών επανάληψης. Προσπαθήστε να γράψετε µε πιο απλό τρόπο τον αλγόριθµο (µε µία δοµή επανάληψης). - Δεν ελέγχετε την τιµή επιστροφής της malloc(). - Δεν αρχικοποιείτε τους pointers (prev, next) του κόµβου που κάνετε malloc() για τη δεύτερη λίστα. - Όταν φτάνετε στην κεφαλή της λίστας κάνετε exit() αντί να επιστρέψετε από τη συνάρτηση. - Ο κώδικας δεν τερµατίζει. 02146 - Ο έλεγχος της τιµής που επιστρέφει η createlist είναι σωστός. - Σωστά επιστρέφετε τον αριθµό των εισαγόµενων κόµβων στη main. - Στη σειρά 48 κάνετε για δεύτερη φορά αποδέσµευση ίδιου κόµβου µε αποτέλεσµα στην εκτέλεση να σας λέει Error in `./lab13': double free or corruption. -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Δεν βρίσκετε σωστά το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος καθώς το βάζετε πάντα step + 1. Γενικά ο τρόπος που το κάνετε είναι σωστός αλλά θα έπρεπε να κοιτάτε µια θέση πριν για να βάλετε το κόµβο. - Προσθέτετε έναν επιπλέον κόµβο στο τέλος. 02147 Οριακό -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή -Δεν κάνετε σωστά την απελευθέρωση της µνήµης. Απελευθερώνετε τον κόµβο και αµέσως µετά κάνετε curr->next το οποίο έχει γίνει free. 02148 - Ο έλεγχος της τιµής που επιστρέφει η createlist είναι σωστός. - Σωστά επιστρέφετε τον αριθµό των εισαγόµενων κόµβων στη main. - Σωστή αποδέσµευση κόµβων. Page 4

-Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Δεν βρίσκετε σωστά το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος καθώς το βάζετε πάντα step + 1. Γενικά ο τρόπος που το κάνετε είναι σωστός αλλά θα έπρεπε να κοιτάτε µια θέση πριν για να βάλετε το κόµβο. - Προσθέτετε έναν επιπλέον κόµβο στο τέλος. 02153 Οριακό -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή -Δεν κάνετε σωστά την απελευθέρωση της µνήµης. Απελευθερώνετε τον κόµβο και αµέσως µετά κάνετε curr->next το οποίο έχει γίνει free. 02156 - Καλά σχόλια. - Σωστός έλεγχος για αριθµό arguments. - Λάθος προσπέλαση την λίστας µε αποτελέσµα το πρόγραµµα να µην τελειώνει ποτέ. - Σωστή χρήση free για τον κόµβο που πρέπει να αφαιρεθεί. 02158 -Σωστά ελέγχετε αν η createlist εκτελλέστικε σωστά και τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή 02159 FAIL Άδειο tgz -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή 02160 02161 02162 - Σωστά ελέγχετε την τιµή που επιστρέφει η createlist. Στην addatstep: - Σωστός έλεγχος της τιµής που επιστρέφει η malloc. - Σωστός έλεγχος για να δείτε αν φτάσατε στην κεφαλή της λίστας. Σωστή απελευθέρωση των κόµβων στην clearlist. - Ο έλεγχος της τιµής που επιστρέφει η createlist είναι σωστός. - Σωστά επιστρέφετε τον αριθµό των εισαγόµενων κόµβων στη main. - Σωστή αποδέσµευση κόµβων. - Σωστά ελέγχετε την τιµή που επιστρέφει η createlist. Στην addatstep: - Σωστός έλεγχος της τιµής που επιστρέφει η malloc. - Σωστός έλεγχος για να δείτε αν φτάσατε στην κεφαλή της λίστας. Σωστή απελευθέρωση των κόµβων στην clearlist. Page 5

02163 - Πρώτα έπρεπε να ελέγχετε για έγκυρο αριθµό παραµέτρων (argc) και µετά να χρησιµοποιήσετε µε ασφάλεια το argv[]. - Δεν ελέγχετε την τιµή επιστροφής της malloc(). - Το σωστό µέγεθος της δυναµικής µνήµης που χρειάζεστε είναι sizeof(listt) και όχι 1. - Δεν αρχικοποιείτε τους pointers (prev, next) του κόµβου που κάνετε malloc() για τη δεύτερη λίστα. - Ο κώδικας τερµατίζει µε segmentation fault λόγω των παραπάνω προβληµάτων. - Δεν καλείτε την clearlist() στη main() για την νέα λίστα. 02166 02168 -Σωστά ελέγχετε αν η creatlist επέστρεψε NULL -Σωστή εύρεση σηµείου στο οποίο θα προστεθεί ο κόµβος -Σωστή malloc και εισαγωγή κόµβου -Σωστά η συνάρτηση επιστρέφει το πλήθος κόµβων που προστέθηκαν. -Σωστές κλήσεις συναρτήσεων -Σωστή διαγραφή όλων των κόµβων. - Σωστή δέσµευση δυναµικής µνήµης, µε έλεγχο της τιµής επιστροφής της malloc(). - Σωστή µεταφορά κόµβων στη νέα λίστα. - Σωστή επιστροφή της νέας λίστας. - Ο κώδικας ελέγχου για την τιµή του step θα µπορούσε να µπει στη main(), καθώς είναι κοινός και ελέγχει την εγκυρότητα της εισόδου του χρήστη. 02169 - Στον έλεγχο της τιµής που επιστρέφει η createlist θα έπρεπε επιπλέο να τερµατίζει το πρόγραµµα. - Γενικά σωστή εύρεση του σηµείου για εισαγωγή κόµβου, αλλά στην αρχή εισάγεις έναν περιττό κόµβο. - Σωστός έλεγχος για να δεις αν έχεις φτάσει στην κεφαλή της λίστας. - Δεν επιστρέφεις τον αριθµό των εισαγόµενων κόµβων στη main. - Η αποδέσµευση κόµβων δε γίνεται σωστά, διότι δεν αποδεσµεύεις όλους τους κόµβους. 02171 - Στην άσκηση 1, αφαιρείτε σωστά τον πρώτο κόµβο, αλλά µετά αφαιρείτε πάντα τον επόµενο αυτού που πρέπει - έχετε λάθος λογική στο loop σας. - Το return plithos++ δεν επιστρέφει αυτό που νοµίζετε. Ξαναδιαβάστε πώς λειτουργεί ο τελεστής ++ - Σωστά κάνετε free - Στη move δεν κάνετε malloc την κεφαλή της λίστας! - Σωστά ελέγχετε το αποτέλεσµα της createlist Page 6

02172 - Σωστός ο έλεγχος για το αν επιστρέφει η createlist NULL τιµή. - Πρώτα έπρεπε να ελέγχετε για έγκυρο αριθµό παραµέτρων και µετά να χρησιµοποιήσετε µε ασφάλεια το argv[2]. - Σωστή εύρεση του κόµβου προς αφαίρεση. - Κάνετε προσπέλαση του current (στο current->next) αφότου έχει γίνει free. Αυτό είναι λάθος. - Να οργανώνετε τις κλήσεις συναρτήσεων καλύτερα. - Η έξοδος του προγράµµατος δεν δουλεύει σωστά όταν το size είναι πολλαπλάσιο του step. - Σωστή η τοποθέτηση των clearlist για το head και το new_head. - Σωστή αρχικοποίηση της δεύτερης λίστας µέσα στη συνάρτηση. - Δεν έχετε κάνει σωστή ανάθεση των δεικτών µε αποτέλεσµα ο κώδικας να µην τρέχει. 02173 - Καλά σχόλια. - Σωστός έλεγχος για αριθµό arguments. - Λάθος!!! θα έπρεπε να κάνετε έλεγχο αν προσπελάστηκε όλη η λίστα συγκρίνοντας τις διευθύνσεις µνήµης (αφού όλα είναι pointers) και όχι βάσει αρνητικών τιµών αφου η ασκήση δεν σας είπε ότι η λίστα δεν θα έχει αρνητικές τιµές! - Σωστός υπολογισµός τον κόµβων που πρέπει να αφαιρεθούν. - Δεν κάνετε ποτέ free τον κόµβο που πρέπει να αφαιρεθεί. - Σωστή δηµιουργία νέας λίστας. - Σωστή απελευθέρωση µνήµης και για τις δύο λίστες. - Δεν εισάγετε σωστά το κόµβο στην νέα λίστα. 02178 - Καλά σχόλια. - Σωστός έλεγχος για αριθµό arguments. - Λάθος!!! θα έπρεπε να κάνετε έλεγχο αν προσπελάστηκε όλη η λίστα συγκρίνοντας τις διευθύνσεις µνήµης (αφού όλα είναι pointers) και όχι βάσει αρνητικών τιµών αφου η ασκήση δεν σας είπε ότι η λίστα δεν θα έχει αρνητικές τιµές! - Σωστός υπολογισµός τον κόµβων που πρέπει να αφαιρεθούν. - Δεν κάνετε ποτέ free τον κόµβο που πρέπει να αφαιρεθεί. - Σωστή δηµιουργία νέας λίστας. - Σωστή απελευθέρωση µνήµης και για τις δύο λίστες. - Δεν εισάγετε σωστά το κόµβο στην νέα λίστα. Page 7

02180 - Δεν κάνετε έλεγχο για το αν επιστρέφει η createlist NULL. - Δεν αφαιρείτε τον τελευταίο κόµβο όταν πρέπει. - Δεν χρησιµοποιείτε καθόλου τη free για να αποδεσµεύσετε τον κόµβο που θέλετε από τη λίστα. - Σωστή η σειρά κλήσης των συναρτήσεων. - Η έξοδος του προγράµµατος δεν είναι σωστή για όλες τις περιπτώσεις. - Η συνάρτηση δεν είναι ολοκληρωµένη. Να την συνεχίσετε στο σπίτι. - Δεν έχετε γράψει κώδικα για να εκτυπώνετε τη δεύτερη λίστα και να αποδεσµεύετε τη µνήµη. 02183 FAIL -Έπρεπε να ελέγχετε αν η creatlist επέστρεψε NULL και να τερµατίζετε το πρόγραµµα σε αυτή τη. -Δεν εντοπίζετε σωστά το σηµείο που πρέπει να προστεθεί o κόµβος. -Σωστή malloc αλλά δεν ελέγχετε άµα επιστρέψει NULL να τερµατίζει το πρόγραµµα. -Δεν εισάγετε σωστά τον κόµβο, κάνετε τελείως λάθος τη σύνδεση. -Η συνάρτηση σας δεν επιστρέφει το πλήθος κόµβων που προστέθηκαν. -Δεν υλοποιείτε τη clearlist 02184 - Πρώτα έπρεπε να ελέγχετε για έγκυρο αριθµό παραµέτρων (argc) και µετά να χρησιµοποιήσετε µε ασφάλεια το argv[]. 02185 - Δεν ελέγχετε την τιµή επιστροφής της malloc(). - Το σωστό µέγεθος της δυναµικής µνήµης που χρειάζεστε είναι sizeof(listt) και όχι 1. - Δεν αρχικοποιείτε τους pointers (prev, next) του κόµβου που κάνετε malloc() για τη δεύτερη λίστα. - Ο κώδικας τερµατίζει µε segmentation fault λόγω των παραπάνω προβληµάτων. - Δεν καλείτε την clearlist() στη main() για την νέα λίστα. -Σωστά ελέγχετε αν η createlist εκτελέστηκε σωστά και τερµατίζετε το πρόγραµµα σε διαφορετική -Δεν βρίσκετε σωστά το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. Έχετε κάνει 2 λάθη. Το πρώτο είναι οτι την πρώτη φορά το βάζετε µια θέση µετα απο την επιθυµητή ενώ στη συνέχεια το αριθµό τον τοποθετείτε ανα µία θέση. -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή Page 8

02186 FAIL 02187 02190 FAIL - Το πρόγραµµα σας δεν κάνει compile, έχετε βασικά λάθη. Στη main - Δεν διαβάζετε πουθενά την είσοδο των δεδοµένων. - Ελέγχουµε argc < 4 και µετά παίρνουµε από τον πίνακα argv τα στοιχεία εισόδου argv[1], argv[2], argv[3] - Οι κλήσεις των συναρτήσεων δεν έχουν σωστή σύνταξη (δεν βάζουµε τον τύπο που επιστρέφει, ούτε τους τύπους των παραµέτρων) Στην addatstep - Δεν χρησιµοποιήσατε τη malloc για τη δηµιουργία νέου node - Δεν µετακινείτε καθόλου το curr ώστε να γίνει σωστά η εισαγωγή - Ο έλεγχος της τιµής που επιστρέφει η createlist δεν είναι σωστός καθώς το πρόγραµµα θα έπρεπε να τερµατίζει. Η µεταβλητή assist δε χρειάζεται malloc εφόσον αµέσως µετά την βάζετε να δείχνει στο head. - Σωστά επιστρέφετε τον αριθµό των εισαγόµενων κόµβων στη main. - Σωστή αποδέσµευση κόµβων. - Σωστά ελέγχετε την τιµή που επιστρέφει η createlist. addatstep: - Σωστός έλεγχος για να δείτε αν φτάσατε στην κεφαλή της λίστας. - Δεν ελέγχετε αν η malloc επιστρέφει null! - Λάθος η αρχικοποίηση του current στη for, δεν µετράει τον 1ο κόµβο, πρέπει current=head. - Λάθος στην εισαγωγή νέου κόµβου. Δε θέτετε όλους τους δείκτες που πρέπει. - Επιστρέφει τον αριθµό k αλλά δεν το διαβάζετε-εκτυπώνετε στη main. 02192 02193 FAIL - Οι οδηγίες του lab ήταν να τρέξετε το πρόγραµµα από τη γραµµή εντολών, να ελέγξετε το πλήθος της εισόδου (argc<4) και να διαβάσετε τα στοιχεία εισόδου από τον πίνακα argv[]. εσείς βάλατε scanf. - Σωστά ελέγχετε την τιµή που επιστρέφει η createlist. addatstep: - Σωστά χρησιµοποιήσατε τη malloc αλλά δεν κάνατε έλεγχο για NULL. - Σωστός έλεγχος για να δείτε αν φτάσατε στην κεφαλή της λίστας. Σωστή απελευθέρωση των κόµβων στην clearlist. - Σωστός έλεγχος του αριθµού των ορισµάτων και σωστή λήψη των τιµών τους. - Σωστή κλήση της createlist, αλλά αλγοριθµικά το παρακάτω είναι εντελώς λάθος head_adress=createlist(size); if(head_adress!=null){ printlist (createlist(size)); } - Εντελώς λάθος είναι και το if (step>=2){ add_result=addatstep(head_adress,step,data); } if (addatstep(head_adress,step,data)==0){ printf("..."); return -2; } - Η addstep αν και έχει κάποια σωστά σηµεία στην λογική της (π.χ. κάνει malloc για κάθε κόµβο που προσθέτει και προσθέτει σωστά τον πρώτο κόµβο) αποτυγχάνει να υλοποιήσει σωστά τον αλγόριθµο. Υλοποιήστε τη στο σπίτι. - Υλοποιήστε την στο σπίτι. Page 9

02195 FAIL Δεν ελήφθη άσκηση 02197 FAIL Δεν ελήφθη άσκηση 02202 - Σωστή χρήση argc, argv - Δεν ελέγχετε αν η createlist επέστρεψε NULL. - Σωστή κλήση removeatstep. - Δεν κάνετε free τους κόµβους που αφαιρούνται! - Στη δεύτερη άσκηση, η ανάθεση NULL στην κεφαλή αµέσως µετά το malloc είναι σοβαρό λάθος και οδηγεί σε segmentation fault. Γενικά η δεύτερη άσκηση έχει πολλές ελλείψεις. 02203 - Σωστός ο έλεγχος για το αν επιστρέφει η createlist NULL τιµή. - Σωστή η εύρεση του κόµβου προς αφαίρεση. - Κάνετε προσπέλαση του current (στο current->next) αφότου έχει γίνει free. Αυτό είναι λάθος. - Σωστή η κλήση των συναρτήσεων. - Η έξοδος του προγράµµατος είναι σωστή. - Σωστή η τοποθέτηση των clearlist για το head και το new_head. - Σωστή αρχικοποίηση της δεύτερης λίστας µέσα στη συνάρτηση. - Σωστή η τοποθέτηση των δεικτών στη νέα λίστα. - Η έξοδος του προγράµµατος είναι σωστή. 02208 - Σωστός ο έλεγχος για το αν επιστρέφει η createlist NULL τιµή. - Πρώτα έπρεπε να ελέγχετε για έγκυρο αριθµό παραµέτρων και µετά να χρησιµοποιήσετε µε ασφάλεια το argv[2]. - Σωστή εύρεση του κόµβου προς αφαίρεση. - Κάνετε προσπέλαση του current (στο current->next) αφότου έχει γίνει free. Αυτό είναι λάθος. - Να οργανώνετε τις κλήσεις συναρτήσεων καλύτερα. - Η έξοδος του προγράµµατος δεν δουλεύει σωστά όταν το size είναι πολλαπλάσιο του step. - Σωστή η τοποθέτηση των clearlist για το head και το new_head. - Σωστή αρχικοποίηση της δεύτερης λίστας µέσα στη συνάρτηση. - Δεν έχετε κάνει σωστή ανάθεση των δεικτών µε αποτέλεσµα ο κώδικας να µην τρέχει. 02209 - Καλά σχόλια. - Ξέχασες να κάνεις έλεγχο για arguments µικρότερες σε αριθµό του 3. - Σωστός έλεγχος αν η createlist επέστρεψε NULL. - Λάθος υπολογισµός τον κόµβων που πρέπει να αφαιρεθούν σε κάποια σενάρια (αφαιρείς πάντα το πρώτο στοιχείο κτλ). Πρόσεξε την αρχική τιµή του counter. - Κάνεις προσπέλαση του κόµβου (στο current->next) αφού τον έχεις κάνει free. Αυτό είναι λάθος. 02212 -Σωστά ελέγχετε αν η creatlist επέστρεψε NULL -Σωστή εύρεση σηµείου στο οποίο θα προστεθεί ο κόµβος -Σωστή malloc και εισαγωγή κόµβου -Σωστά η συνάρτηση επιστρέφει το πλήθος κόµβων που προστέθηκαν. -Σωστές κλήσεις συναρτήσεων -Σωστή διαγραφή όλων των κόµβων. Page 10

02218 FAIL 02220 -Έπρεπε να ελέγχετε αν η creatlist επέστρεψε NULL και να τερµατίζετε το πρόγραµµα σε αυτή τη. -Δεν εντοπίζετε σωστά το σηµείο που πρέπει να προστεθεί o κόµβος. -Σωστή malloc αλλά δεν ελέγχετε άµα επιστρέψει NULL να τερµατίζει το πρόγραµµα. -Δεν εισάγετε σωστά τον κόµβο, κάνετε τελείως λάθος τη σύνδεση. -Η συνάρτηση σας δεν επιστρέφει το πλήθος κόµβων που προστέθηκαν. -Δεν υλοποιείτε τη clearlist - Πριν προσπελάσετε το argv πρέπει να ελέγχετε το argc. - Λάθος χειρισµός στην απελευθέρωση µνήµης. Κάνετε free(current) και στην αµέσως επόµενη επανάληψη υπολογίζετε το current->next. Έπρεπε να είχατε αποθηκεύσει σε βοηθητική µεταβλητή το current->next πριν γίνει το free, και µετά να χρησιµοποιήσετε αυτή τη µεταβλητή. Είναι λάθος να προσπελάσετε ελευθερωµένη µνήµη. - Στη move δε βάζετε σωστά τους δείκτες. Ο last_node δε χρειάζεται καν. Μπορείτε να χρησιµοποιήσετε το head->prev στη θέση του. Σχεδιάστε τη λίστα σας στο χαρτί, και µετά προσπαθήστε πάλι να φτιάξτε τους δείκτες. - Σωστή main. 02222 FAIL Δεν ελήφθη άσκηση 02226 FAIL Άδειο tgz 02229 - Σωστή removeatstep, µπράβο. - Σωστή χρήση argc/argv - Έπρεπε να ελέγχεις στη main αν η createlist επέστρεψε NULL και σε αυτή την να τερµατίζει το πρόγραµµα. - Στη moveatstep ξέχασες να αρχικοποιήσεις το curr - το είχες σωστά στη remove οπότε υποθέτω το έσβησες κατά λάθος. - Σωστή αρχικοποίηση της νέας λίστας και σωστή εισαγωγή στο τέλος της λίστας. Μετά από malloc να ελέγχεις πάντα αν επέστρεψε NULL. - Σωστή κλήση clearlist και στις δύο περιπτώσεις. - Πολύ καλή δουλειά, µπράβο. 02232 - Ολοκληρώστε τη δεύτερη άσκηση στο σπίτι. Page 11

02235 FAIL lab13grades - Σωστός έλεγχος του αριθµού των ορισµάτων και σωστή λήψη των τιµών τους. - Σωστή κλήση της createlist, αλλά αλγοριθµικά το παρακάτω είναι εντελώς λάθος head_adress=createlist(size); if(head_adress!=null){ printlist (createlist(size)); } - Εντελώς λάθος είναι και το if (step>=2){ add_result=addatstep(head_adress,step,data); } if (addatstep(head_adress,step,data)==0){ printf("..."); return -2; } 02236 - Η addstep αν και έχει κάποια σωστά σηµεία στην λογική της (π.χ. κάνει malloc για κάθε κόµβο που προσθέτει και προσθέτει σωστά τον πρώτο κόµβο) αποτυγχάνει να υλοποιήσει σωστά τον αλγόριθµο. Υλοποιήστε τη στο σπίτι. - Υλοποιήστε την στο σπίτι. - Στη removeatstep, δεν αρχικοποιείτε τη µεταβλητή removed_nodes µε αποτέλεσµα να περιέχει τελικά "σκουπίδια" - Δεν κάνετε free τον κόµβο που αφαιρείτε - Στο for loop πρέπει κάθε φορά που "προχωρά" ο κόµβος current να ελέγχετε αν έχει ξαναφτάσει στο head ώστε να τερµατίσει η συνάρτηση, διαφορετικά θα συνεχίσει να κάνει κύκλους στη λίστα και να αφαιρεί κόµβους που δεν πρέπει. - Στη main, δεν ελέγχετε αν η createlist επέστρεψε NULL - Σωστή χρήση argc/argv - Σωστή κλήση της removeatstep και της clearlist. - Στη moveatstep αρχικοποιείτε σωστά τη νέα λίστα, αλλά η εισαγωγή γίνεται στην αρχή, όχι στο τέλος όπως ζητούσαµε. Επίσης, θέτετε µόνο τους δείκτες του νέου κόµβου, αλλά όχι και αυτούς του προηγούµενου και του επόµενου στη λίστα. 02237 FAIL Δεν ελήφθη άσκηση 02242 - Δεν κάνετε έλεγχο για το αν επιστρέφει η createlist NULL. - Δεν αφαιρείτε τον τελευταίο κόµβο όταν πρέπει. - Δεν χρησιµοποιείτε καθόλου τη free για να αποδεσµεύσετε τον κόµβο που θέλετε από τη λίστα. - Σωστή η σειρά κλήσης των συναρτήσεων. - Η έξοδος του προγράµµατος δεν είναι σωστή για όλες τις περιπτώσεις. - Η συνάρτηση δεν είναι ολοκληρωµένη. Να την συνεχίσετε στο σπίτι. - Δεν έχετε γράψει κώδικα για να εκτυπώνετε τη δεύτερη λίστα και να αποδεσµεύετε τη µνήµη. Page 12

lab13grades 02243 - Πρώτα έπρεπε να ελέγχετε για έγκυρο αριθµό παραµέτρων (argc) και µετά να χρησιµοποιήσετε µε ασφάλεια το argv[]. - Δεν εκτυπώνετε στην main() τον αριθµό των κόµβων που αφαιρέθηκαν. - Δεν είναι απαραίτητη η χρήση δυο δοµών επανάληψης. Προσπαθήστε να γράψετε µε πιο απλό τρόπο τον αλγόριθµο (µε µία δοµή επανάληψης). - Δεν ελέγχετε την τιµή επιστροφής της malloc(). - Δεν αρχικοποιείτε τους pointers (prev, next) του κόµβου που κάνετε malloc() για τη δεύτερη λίστα. - Όταν φτάνετε στην κεφαλή της λίστας κάνετε exit() αντί να επιστρέψετε από τη συνάρτηση. - Ο κώδικας δεν τερµατίζει. 02249 - Σωστός ο έλεγχος για το αν επιστρέφει η createlist NULL τιµή. - Σωστή η εύρεση του κόµβου προς αφαίρεση. - Κάνετε προσπέλαση του current (στο current->next) αφότου έχει γίνει free. Αυτό είναι λάθος. - Δεν επιστρέφεται το πλήθος των διεγραµµένων κόµβων. - Σωστή η κλήση των συναρτήσεων. - Η έξοδος του προγράµµατος είναι σωστή. 02251 02254 02258 -Δεν ελέγχετε αν η creatlist επέστρεψε NULL ώστε να τερµατίζετε το πρόγραµµα σε αυτή τη. -Δεν εντοπίζετε σωστά το σηµείο που πρέπει να τοποθετηθεί ο κόµβος. Η άσκηση δε ζητούσε να τοποθετείτε κόµβο ανάµεσα σε κάθε ήδη υπάρχον κόµβο. -Σωστή malloc αλλά όταν επιστρέφει NULL πρέπει να τερµατίζει το πρόγραµµα. -Σωστές κλήσεις συναρτήσεων. -Δεν υλοποιείτε τη clearlist - Στην άσκηση 1, αφαιρείτε σωστά τον πρώτο κόµβο, αλλά µετά αφαιρείτε πάντα τον επόµενο αυτού που πρέπει - έχετε λάθος λογική στο loop σας. - Το return plithos++ δεν επιστρέφει αυτό που νοµίζετε. Ξαναδιαβάστε πώς λειτουργεί ο τελεστής ++ - Σωστά κάνετε free - Στη move δεν κάνετε malloc την κεφαλή της λίστας! - Σωστά ελέγχετε το αποτέλεσµα της createlist - Στη removeatstep, δεν αρχικοποιείτε τη µεταβλητή removed_nodes µε αποτέλεσµα να περιέχει τελικά "σκουπίδια" - Δεν κάνετε free τον κόµβο που αφαιρείτε - Στο for loop πρέπει κάθε φορά που "προχωρά" ο κόµβος current να ελέγχετε αν έχει ξαναφτάσει στο head ώστε να τερµατίσει η συνάρτηση, διαφορετικά θα συνεχίσει να κάνει κύκλους στη λίστα και να αφαιρεί κόµβους που δεν πρέπει. - Στη main, δεν ελέγχετε αν η createlist επέστρεψε NULL - Σωστή χρήση argc/argv - Σωστή κλήση της removeatstep και της clearlist. - Στη moveatstep αρχικοποιείτε σωστά τη νέα λίστα, αλλά η εισαγωγή γίνεται στην αρχή, όχι στο τέλος όπως ζητούσαµε. Επίσης, θέτετε µόνο τους δείκτες του νέου κόµβου, αλλά όχι και αυτούς του προηγούµενου και του επόµενου στη λίστα. Page 13

02260 02261 lab13grades - Καλά σχόλια. - Σωστός έλεγχος για αριθµό arguments αλλά λάθος έλεγχος του argv. Το argv[1] είναι δείκτης. Δεν είναι δυνατό να είναι µικρότερος του µηδενός. Έπρεπε να µετατρέψετε το string σε ακέραιο και να ελέγχετε αυτό. - Λάθος υπολογισµός τον κόµβων που πρέπει να αφαιρεθούν σε κάποια σενάριο (π.χ../lab13 4 3./lab13 4 1). Γενικά ο κώδικάς σας είναι αρκετά µπερδεµένος και δυσνόητος. ΜΗ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ flags. Είναι πολύ κακή τακτική. Ακόµη χειρότερο είναι το ότι χρησιµοποιήσατε το όνοµα flag και όχι κάτι περιγραφικό που να µας λέει τι σκοπό εξυπηρετεί αυτή η µεταβλητή. Δοκιµάστε να ξανακάνετε την άσκηση, χωρίς flag, και µε λιγότερο κώδικα. - Εντολές µετά από break σε loop δεν εκτελούνται ποτέ! - Σωστή χρήση free για τον κόµβο που πρέπει να αφαιρεθεί. - Κάντε και τη δεύτερη άσκηση στο σπίτι. - Καλά σχόλια. - Σωστός έλεγχος για αριθµό arguments αλλά λάθος έλεγχος του argv. Το argv[1] είναι δείκτης. Δεν είναι δυνατό να είναι µικρότερος του µηδενός. Έπρεπε να µετατρέψετε το string σε ακέραιο και να ελέγχετε αυτό. - Λάθος υπολογισµός τον κόµβων που πρέπει να αφαιρεθούν σε κάποια σενάριο (π.χ../lab13 4 3./lab13 4 1). Γενικά ο κώδικάς σας είναι αρκετά µπερδεµένος και δυσνόητος. ΜΗ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ flags. Είναι πολύ κακή τακτική. Ακόµη χειρότερο είναι το ότι χρησιµοποιήσατε το όνοµα flag και όχι κάτι περιγραφικό που να µας λέει τι σκοπό εξυπηρετεί αυτή η µεταβλητή. Δοκιµάστε να ξανακάνετε την άσκηση, χωρίς flag, και µε λιγότερο κώδικα. - Εντολές µετά από break σε loop δεν εκτελούνται ποτέ! - Σωστή χρήση free για τον κόµβο που πρέπει να αφαιρεθεί. - Κάντε και τη δεύτερη άσκηση στο σπίτι. 02262 FAIL - Σωστός έλεγχος του πλήθους των ορισµάτων από την γραµµή εντολών. - Σωστή λήψη τιµών για τα ορίσµατα argv[1] - argv[3]. - Σωστή χρήση της createlist αλλά δεν ελέγχεις εάν αυτή επιστρέφει NULL. - Σωστή χρήση της printlist. - Η addstep είναι εντελώς λάθος και ηµιτελής. * Προσπάθησε να υλοποιήσεις την addstep και την clearlist στο σπίτι. 02263 FAIL - Σωστά ελέγχετε την τιµή που επιστρέφει η createlist. addatstep: - Σωστός έλεγχος για να δείτε αν φτάσατε στην κεφαλή της λίστας. - Δεν ελέγχετε αν η malloc επιστρέφει null! - Λάθος η αρχικοποίηση του current στη for, δεν µετράει τον 1ο κόµβο, πρέπει current=head. - Λάθος στην εισαγωγή νέου κόµβου. Δε θέτετε όλους τους δείκτες που πρέπει. - Επιστρέφει τον αριθµό k αλλά δεν το διαβάζετε-εκτυπώνετε στη main. 02264 -Σωστά ελέγχετε αν η createlist εκτελλέστικε σωστά και τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος -Σωστά τερµατίζετε το loop µε το να κοιτάτε αν επιστρέψατε στην κεφαλή -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή Page 14

02275 lab13grades - Σωστή χρήση argc, argv - Δεν ελέγχετε αν η createlist επέστρεψε NULL. - Σωστή κλήση removeatstep. - Δεν κάνετε free τους κόµβους που αφαιρούνται! - Στη δεύτερη άσκηση, η ανάθεση NULL στην κεφαλή αµέσως µετά το malloc είναι σοβαρό λάθος και οδηγεί σε segmentation fault. Γενικά η δεύτερη άσκηση έχει πολλές ελλείψεις. 02283 - Οι οδηγίες του lab ήταν να τρέξετε το πρόγραµµα από τη γραµµή εντολών, να ελέγξετε το πλήθος της εισόδου (argc<4) και να διαβάσετε τα στοιχεία εισόδου από τον πίνακα argv[]. εσείς βάλατε scanf. - Σωστά ελέγχετε την τιµή που επιστρέφει η createlist. addatstep: - Σωστά χρησιµοποιήσατε τη malloc αλλά δεν κάνατε έλεγχο για NULL. - Σωστός έλεγχος για να δείτε αν φτάσατε στην κεφαλή της λίστας. Σωστή απελευθέρωση των κόµβων στην clearlist. Page 15