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

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

FAIL PASS PASS οριακά

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

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

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

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

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

to post PASS PASS FAIL

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

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

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

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

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

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

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

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

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

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

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

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

Προγραµµατισµός Ι Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι 1 Νικόλαος Δ.

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

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

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

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

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

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

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

Sheet PASS 1426 PASS 1428 PASS. Page 1

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

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

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

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

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

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

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

char name[5]; /* define a string of characters */

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

ΑΕΜ ή username. Sheet2

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

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

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

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

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

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

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

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

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

Εισαγωγή στον δομημένο προγραμματισμό

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οι δείκτες στη γλώσσα C

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Transcript:

AEM 0001 0002 0003 COMMENTS οριακά -Η σταθερά για το µέγιστο µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Έπρεπε να δεσµέυσεις δυναµικά και την µνήµη του αρχικού string και να το κάνεις free µετά. -Δεν αποδεσµέυεις µε free όλη την µνήµη που δέσµευσες. -Το νέο string δεν έχει σαν τελευταίο χαρακτήρα το '\0'. -Δεν έχεις καθόλου ΣΧΟΛΙΑ! -Δεν δηλώνεις σταθερά για το µέγιστο µέγεθος του πίνακα. -Ο πίνακας έπρεπε να έχει µήκος 101, όχι 100. -Υπολογίζεις λάθος το µέγεθος του νέου string. Ψάξτο µε gdb. - Το πρόγραµµα δεν κάνει compile 0004 Δεν παρέδωσε 0005 0006 0008 - To πρόγραµµα δεν κάνει compile πολύ οριακά Αν το είχες κάνει θα έβρισκες εύκολα το λάθος που προκαλεί segmentation fault (αντι για part1-part2 έπρεπε να έχεις part2-part1) - Το τελικό string δεν έπρεπε να περιέχει το χαρακτήρα που το οριοθετεί - Δεν απελευθερώνεις τη µνήµη που είχες δεσµεύσει για το string που κατασκεύασες - Δεν υπάρχουν καθόλου σχόλια. - Μην αγνοείς τα warnings του compiler: σε ειδοποιούν για σοβαρά λάθη. Page 1

0009 0010 0011 0012 οριακά - Η υλοποίηση του εντοπισµού των δύο εµφανίσεων του χαρακτήρα στην συνάρτηση findpart είναι λανθασµένη. Η συνθήκη στην εντολή for όπου γίνεται η αντιγραφή δεν είναι σωστή καθώς µετά την αρχικοποίηση '' deytero_gramma = 0 '' είναι '' deytero_gramma == 0 ''. Εποµένως, το σώµα της εντολής for δεν εκτελείται ποτέ. Δες την αντίστοιχη λύση. - Ο χώρος που δεσµεύεται για το νέο αλφαριθµητικό είναι µεγαλύτερος από τον απαιτούµενο. - Η εντολή '' return 0; '' δεν θα έπρεπε να βρίσκεται στο σώµα της εντολής for. - Δεν απελευθερώνεις την µνήµη που έχει δεσµευτεί για το string που δηµιουργεί η συνάρτηση findpart. Η αποδέσµευση θα έπρεπε να γίνεται στην συνάρτηση main. - Η συνάρτηση findpart θα έπρεπε να καλείται αφού γίνει η λήψη των αντίστοιχων δεδοµένων από τον χρήστη. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. οριακά -Δε χρειάζεται να βάζεις σχόλια σε κάθε γραµµή. Για παράδειγµα, η λειτουργία των printf στη main είναι προφανής και δε χρειάζεται επεξήγηση. Αυτό που ΕΠΡΕΠΕ να έχεις είναι σχόλια συναρτήσεων. Διάβασε προσεκτικά το φυλλάδιο σχολιασµού - Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. Τι σηµαίνει z? Beks? Γιατί να µη χρησιµοποιήσεις positions αντί για posit? - Το πρόγραµµά σου θα ήταν πιο efficient αν έβγαινες από το loop όταν το z γινόταν 2. Δεν υπάρχει λόγος να βρεις περισσότερες εµφανισεις του χαρακτήρα. - Έπρεπε να είχες τερµατίσει τη συµβολοσειρά µε '\0' - Τι ρόλο παίζουν οι τιµές 'a' και 'b'? Τι σηµαίνει check_2? Χρήση µεταβλητών µε άσχηµα ονόµατα και τιµών µη-προφανούς σηµασίας κάνουν το πρόγραµµά σου δυσνόητο. At the very least, έπρεπε να έχεις κάποια επεξηγηµατικά σχόλια σ'εκείνο το σηµείο - Δεν υπάρχουν σχόλια συναρτήσεων - Δεν απελευθερώνεις τη µνήµη που δέσµευσες δυναµικά. - Καλή δουλειά µε το "ταίριασµα" του output οριακά - Δεν υπάρχουν σχόλια - Δεσµεύεις λίγο περισσότερο χώρο από ότι χρειάζεται για το new_word - Το l έπρεπε να ξεκινά από 0. Γενικά το κοµµάτι αντιγραφής των χαρακτήρων στο νέο string είναι λάθος - Ο αλγόριθµος εύρεσης των θέσεων είναι λάθος. - Άσχηµα ονόµατα µεταβλητών (j, k) Page 2

0013 0014 0015 οριακά - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση findpart. - Δεν ελέγχεις την τιµή που επιστρέφει η συνάρτηση malloc µετά την κλήση αυτής. Εάν η τιµή είναι ίση µε NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. - Δεν απελευθερώνεις την µνήµη που έχεις δεσµεύσει για το string που επιστρέφεται από την συνάρτηση findpart. - Η µνήµη για την µεταβλητή symvol θα έπρεπε να έχει δεσµευτεί δυναµικά και όχι στατικά. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται πλήρως µε αυτά του αντίστοιχου φυλλαδίου. - Το string που επιστρέφει η συνάρτηση findpart δεν δηµιουργείται σωστά. Αυτό οφείλεται στην εντολή j = 0 που βρίσκεται στο σώµα της εντολής for, οπότε σε κάθε επανάληψη είναι j = 0. Η εντολή θα έπρεπε να βρίσκεται εκτός του σώµατος της εντολής. - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση findpart. - Δεν ελέγχεις την τιµή που επιστρέφει η συνάρτηση malloc. Εάν η τιµή είναι ίση µε NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. - Δεν απελευθερώνεις την µνήµη που έχεις δεσµεύσει για το string που επιστρέφεται από την συνάρτηση findpart. - Η µνήµη για την µεταβλητή sumboloseira θα έπρεπε να έχει δεσµευτεί δυναµικά και όχι στατικά. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται πλήρως µε αυτά του αντίστοιχου φυλλαδίου. - Απαράδεκτα ονόµατα µεταβλητών - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση findpart. - Δεν απελευθερώνεις την µνήµη που έχεις δεσµεύσει για το string που επιστρέφεται από την συνάρτηση findpart. - Η µνήµη για την µεταβλητή string θα έπρεπε να έχει δεσµευτεί δυναµικά και όχι στατικά. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται πλήρως µε αυτά του αντίστοιχου φυλλαδίου. - Αρκετή προσοχή στην στοίχιση. 0016 0018 - Μην αγνοείς τα warnings του compiler: σε ειδοποιούν για σοβαρά λάθη. Page 3

0019 0020 Sheet1_2 -Μην αγνοείς τα warnings-σε προειδοποιούν για σηµαντικά λάθη! -Το πρόγραµµα σου δεν λειτουργεί σωστά. Δεν εκτυπώνεται καθόλου η νέα συµβολοσειρά. -Βασικά λάθη σε συναρτήσεις. --Η συνάρτηση findpart επιστρέφει µια συµβολοσειρά, οπότε έπρεπε να είχε δηλωθεί ως char*. -Έπρεπε να χρησιµοποιήσεις την συνάρτηση strlen για να βρεις το µέγεθος της συµβολοσειράς. -Δεν έχεις καταλάβει την χρήση της malloc. Πρέπει πρώτα να την καλέσεις για να δεσµεύσεις δυναµικά µνήµη για την νέα συµβολοσειρά σου και µετά να αποθηκεύσεις τους χαρακτήρες που θέλεις στην συµβολοσειρά σου. -Μετά από την κλήση της malloc στην συνάρτηση findpart έπρεπε να ελέγχεις αν επιστρέφεται NULL, κι αν ναι, να τερµατίζεις το πρόγραµµα. -Δεν αποθηκεύεις στη νέα συµβολοσειρά το τµήµα της αρχικής συµβολοσειράς που βρίσκεται µεταξύ των δύο εµφανίσεων του χαρακτήρα αλλά ό,τι να ναι! Διάβασε καλά την εκφώνηση της άσκησης. -Δεν τερµατίζεις σωστά την συµβολοσειρά σου. -Ξαναδιάβασε τη θεωρία για τοπικές µεταβλητές. H new_str δεν έχει καµία σχέση µε τη main. Το free(new_str) έπρεπε να είναι free(str_new). -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",string); -Το output του προγράµµατος σου δεν ταιριάζει καθόλου µε το output που σας δίνεται! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) - Τα όρια στα δύο for loops στην συνάρτηση findpart δεν είναι σωστά. Έπρεπε να έχεις χρησιµοποιήσει την συνάρτηση strlen ώστε να έχεις βρει το πραγµατικό µήκος της συµβολοσειράς. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Η σταθερά SIZE έχει τιµή ίση µε 100 οπότε θα έπρεπε να διαβάζεις 99 χαρακτήρες και όχι 100 στην αντίστοιχη εντολή scanf. - Δεν απελευθερώνεις την µνήµη που έχεις δεσµεύσει για το string που επιστρέφεται από την συνάρτηση findpart. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. - Αρκετή προσοχή στην στοίχιση. 0021 Δεν παρέδωσε Page 4

0022 0023 0024 0025 οριακά - πρώτα δεσµεύουµε µνήµη µε malloc και µετά χρησιµοποιούµε τις µεταβλητές αυτές. Εσύ κάνεις ακριβώς το αντίθετο µε αποτέλεσµα το segmantation fault. - η αντιγραφή χαρακτήρων για τη νέα συµβολοσειρά θα έπρεπε να ξεκινά από το 0 και όχι από το pos[0] - δεν ελευθερώνεις τη µνήµη για τη δεύτερη συµβολοσειρά - θα έπρεπε να έχεις δείκτες και όχι πίνακες στις παραµέτρους των συναρτήσεων αλλά και στη main θα έπρεπε να χρησιµοποιήσεις δείκτη και δυναµική δέσµευση µνήµης για την αρχική συµβολοσειρά αντί για πίνακα - for ( k = i; k<n; k++ ) στο δεύτερο for θα έπρεπε να ξεκινάς από το i+1 γιατί στη θέση i είναι ο πρώτος χαρακτήρας και εσύ θα τον ξαναποθηκεύσεις σαν τη δεύτερη εµφάνιση. - θα έπρεπε να χρησιµοποιήσεις την strlen και όχι να φτάνεις µέχρι το Ν - στην αποθήκευση της νέας συµβoλοσειράς δε µπορείς να αυξάνεις το thesi αλλά να το χρησιµοποιείς και στη συνθήκη ελέγχου του for(i < (thesi1 - thesi ) θα έπρεπε πριν το for να αποθηκεύσεις το αποτέλεµα της διαφοράς σε µια µεταβλητή και αυτή να χρησιµοποιήσεις στον έλεγχο.) - Δεν τερµατίζεις το string µε '\0' - να βάζεις σχόλια σύµφωνα µε τα πρότυπα σχολιασµού - Το πρόγραµµα δεν κάνει compile - Πολλά warnings τα οποία δε θα έπρεπε να αγνοήσεις. - το str1 είναι µια µεταβλητή χαρακτήρας την οποία χρησιµοποιείς στη main µόνο για την τυπώσεις ώς συµβολοσειρά. Η µεταβλητή αυτή δεν έχει αρχικοποιηθεί πουθενά και ούτε έχει χρησιµοποιηθεί για την κλήση της συνάρτησης findpart. - h findpart έχει δηλωθεί να επιστρέφει char ενώ θα έπρεπε να επιστρέφει char * - καθόλου σχόλια - δε θα έπερεπε να χρησιµοποιήσεις πινακες αλλά παντού δείκτες και δυναµική δέσµευση µνήµης - στην αντιγραφή τυ ενδιάµεσου τµήµατος ξεκινάς την αντιγραφή από το 0 για την αρχική συµβολοσειρά ενώ θα έπρεπε να ξεκινήσεις µία θέση µετά την πρώτη εµφάνιση του χαρακτήρα Page 5

0026 0027 Sheet1_2 -Το πρόγραµµα σου δεν λειτουργεί σωστά. -Λάθος στον αλγόριθµο εύρεσης των θέσεων. Δεν βρίσκεις ούτε την πρώτη ούτε την δεύτερη εµφάνιση του χαρακτήρα µέσα στην συµβολοσειρά! -Έτσι όπως υλοποιείς το πρόγραµµα σου οι µεταβλητές pos1, pos2 δείχνουν πάντα στην ίδια θέση (στη θέση 1) µε αποτέλεσµα όταν κάνεις new = pos2 - pos1; η µεταβλητή new να παίρνει την τιµή 0. Αυτό έχει ως αποτέλεσµα να µην δεσµεύεται η µνήµη που απαιτείται για την νέα συµβολοσειρά και να εµφανίζεται το µήνυµα "Error: Could not allocate memory." -Δεν αποθηκεύεις στη νέα συµβολοσειρά το τµήµα της αρχικής συµβολοσειράς που βρίσκεται µεταξύ των δύο εµφανίσεων του χαρακτήρα αλλά ολόκληρη την συµβολοσειρά. -Δεν απελευθερώνεις την µνήµη που δεσµεύτηκε για τη συµβολοσειρά που επιστρέφει η findpart. Δηλαδή αφού κληθεί η συνάρτηση και επιστραφεί η συµβολοσειρά έπρεπε να είχες κάνει free(new); -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Το output του προγράµµατος σου δεν ταιριάζει µε το output που σας δίνεται! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) -To πρόγραµµα σου δεν λειτουργεί σωστά. -Έτσι όπως υλοποιείς το πρόγραµµα σου µετά το τέλος της 1 ης for στην συνάρτηση findpart στην µεταβλητή pos κρατάς την δεύτερη εµφάνιση του χαρακτήρα ενώ στην µεταβλητή pos2 την πρώτη. Θα έπρεπε να κάνεις το αντίστροφο! Αυτό έχει ως αποτέλεσµα το πρόγραµµα σου να µην µπαίνει καθόλου µέσα στην 2 η for: for (i=pos;i<=pos2;i++){ k=k+1; } και να µην υπολογίζεται ποτέ το k και κατά συνέπεια και το new_len. Γι αυτό το λόγο δεν δεσµεύεται η µνήµη που απαιτείται για την νέα συµβολοσειρά και εµφανίζεται το µήνυµα "error couldn't allocate memory". -Δεν αποθηκεύεις στη νέα συµβολοσειρά το τµήµα της αρχικής συµβολοσειράς που βρίσκεται µεταξύ των δύο εµφανίσεων του χαρακτήρα αλλά ολόκληρη την συµβολοσειρά. -Δεν κάνεις free την µνήµη για το string που δέσµευσες στην main. -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών. -Το output του προγράµµατος σου δεν ταιριάζει µε το output που σας δίνεται! -Πρόσεχε πολύ την στοίχιση! -Δεν υπάρχουν σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Μη χρησιµοποιείς σχόλια C++ και µην αφήνεις σπασµένο κώδικα µέσα σε σχόλια. Page 6

0028 0030 0033 -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Γιατί στην main καλείς δυο φορές την findpart? -Δεσµεύεις περισσότερη µνήµη για τη νέα σου συµβολοσειρά. -Δεν τερµατίζεις σωστά το string. Έπρεπε str2[j-k-1]='\0'; και όχι str2[jk+1]=('\0'); -Δεν υπάρχουν καθόλου σχόλια. Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) - Και στη δεύτερη κλήση της malloc πρέπει να ελέγχεις αν επέστρεψε - Γενικά καλή δουλειά -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf ("%100s", string); -Δεν υπάρχουν επαρκή σχόλια! Δεν ακολουθείς ακριβώς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) 0034 0038 0638 1072 Άσχηµη στοίχιση - Ελάχιστα σχόλια - Το µέγεθος στατικών πινάκων στη C πρέπει να είναι σταθερό. - Δε δεσµεύεις δυναµικά µνήµη για το αποτέλεσµα - Πολλά λάθη στον αλγόριθµο - Το πρόγραµµα δεν κάνει compile οριακά - Κάνεις free το new_str κι αµέσως µετά το επιστρέφεις. Είναι λάθος να χρησιµοποιείς µνήµη που έχει ελευθερωθεί. Το free(new_str) έπρεπε να είναι στη main. - Δεν κάνεις free τη µνήµη που δέσµευσες για το string στη main - Το output του προγράµµατός σου δεν είναι φορµαρισµένο ακριβώς όπως το σικό µας. - Δεσµεύεις περισσότερη µνήµη από όσο χρειάζεται. - Δεν υπάρχουν σχόλια συναρτήσεων. Page 7

1073 1074 1075 1077 οριακά - το j στο πρώτο while είναι περιττό θα µπορούσες να χρησιµοποιήσεις µόνο το i - *(str2+iend+1)='\0'; το iend δείχνει στη δεύτερη εµφάνιση του χαρακτήρα που µπορεί να είναι οπουδήποτε µέσα στο string. Θα έπρεπε να βάλεις τη διαφορά των θέσεων -1. Γι αυτό προκύπτει Segmentation fault - αντί για SIZE2=iend-istart+1; το σωστό µέγεθος για τη δέσµευση µνήµης είναι SIZE2=iend-istart; (οι ενδιάµεσοι χαρακτήρες +1 θέση για το '/0') -Το πρόγραµµα σου δεν λειτουργεί σωστά. Δεν εκτυπώνεται καθόλου η νέα συµβολοσειρά. -H printf() δεν συντάσσεται έτσι! -Βασικά λάθη σε συναρτήσεις. --Η συνάρτηση findpart επιστρέφει µια συµβολοσειρά, οπότε έπρεπε να είχε δηλωθεί ως char*. --Δεν επιστρέφεις σωστά την νέα σου συµβολοσειρά στην συνάρτηση findpart. -Ξαναδιάβασε τη θεωρία για τοπικές µεταβλητές. H str_new_len δεν έχει καµία σχέση µε τη main. Το free(str_new_len) έπρεπε να είναι free(new_string). -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) -θα έπρεπε να σπάσεις το διπλό for σε δύο ξεχωριστά ή να βάλεις break όταν βρει το δεύτερο χαρακτήρα και όταν επιστρέφει στο πρώτο for. Η δέσµευση µνήµης πρέπει να γίνεται µόνο µία φορά άρα δε µπορείς να την έχεις µέσα σε επανάληψη όπως και το for της αντιγραφής θα έπρεπε να είναι έξω από από το διπλό for. - έχεις string2[deuteri_emfanish] = '\0'; ενώ θα έπρεπε να είναι string2[deuteri_emfanish-prwti_emfanish -1] = '\0'; και φυσικά δε θα έπρεπε να έιναι µέσα στο for της αντιγραφής. Μια φορά βάζουµε τον τερµατικό χαρακτήρα στο τέλος του string. - καθόλου σχόλια -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε - Έπρεπε να κάνεις free το apotelesma στη main. Ξαναδιάβασε τη θεωρία σχετικά µε το εύρος των µεταβλητών. Η string2 είναι τοπική στη findpart και δεν έχει καµιά σχέση µε τη main. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη - Πρόσεχε τη στοίχιση - Η έξοδος δεν παρουσιάζεται ακριβώς όπως η δική µας. - Τα σχόλια συναρτήσεων πρέπει να βρίσκονται πριν τη συνάρτηση, όχι µέσα σε αυτή. - Τα σχόλια που έχεις µέσα στον κώδικα είναι πολύ καλογραµµένα,αλλά µη χρησιµοποιείς σύνταξη C++. Τα σχόλια C περικλείονται σε /* */ Page 8

1079 1080 1081 1083 1084 1085 πολύ οριακά - Λάθος υλοποιηση. Δε βρίσκεις την πρώτη και τη δεύετρη θέση. Με την πρώτη δοµή επανάληψης βρίσκεις την τελευταία εµφάνιση και στο δεύτερο for το pos2 δε παίρνει τιµή γιατί στην πρώτη επανάληψη βρίσκει το break το οποίο είναι έξω από την if και βγαίνει έξω από το for. Οπότε segmantation fault - αντί για SIZE_NEW=(pos2-pos1)+1; θα έπρεπε να δεµεύσεις SIZE_NEW=pos2-pos1 για τη malloc - δεν έχεις αποδεσµεύσει τη µνήµη για τη δεύτερη συµβολοσειρά - καλύτερα ονόµατα στις µεταβλητές σου. Τί είναι το D? - τα σχόλια για κάθε συνάτηση µπαίνουν πριν από τη συνάρτηση -Η σταθερά για το µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Στον υπολογισµό του µεγέθους του πίνακα δεν χρειαζόταν το -1. Όπως το έχεις δεσµεύεις λιγότερη µνήµη απ'όση χρειάζεσαι-- >ΠΡΟΒΛΗΜΑ! -Να βάζεις πιο πολλά σχόλια στον κώδικα. -Η εντολή malloc δεν συντάσσεται έτσι! Διάβασε την θεωρία!!! -Η συνάρτηση findpart δεν δουλεύει σωστά. Ενώ κάνεις γενικά καλή δουλειά σε κάποια λεπτά σηµεία, έχεις αδυναµία σε κάποια πιο βασικά. -Η σταθερά για το µέγιστο µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Έλεγχο για NULL κάνουµε µετά από ΚΑΘΕ κλήση της malloc, όχι όµως και µετά την δήλωση ενός πίνακα. Αυτόν τον έλεγχο τον κάνει αυτόµατα ο compiler. -Έπρεπε να δεσµέυσεις δυναµικά και την µνήµη του αρχικού string και να το κάνεις free µετά. -Δεν αποδεσµέυεις µε free όλη την µνήµη που δέσµευσες. -Δεν έχεις καθόλου ΣΧΟΛΙΑ! - Μην αγνοείς τα warnings του compiler: σε ειδοποιούν για σοβαρά λάθη. - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση findpart. - Δεσµεύεις περισσότερο χώρο για το string new_str. Για το νέο string απαιτούνται length χαρακτήρες. - Δεν ελέγχεις την τιµή που επιστρέφει η συνάρτηση malloc µετά την κλήση αυτής στην συνάρτηση findpart. Εάν αυτή είναι ίση µε NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται πλήρως µε αυτά του αντίστοιχου φυλλαδίου. - Πολύ καλή δουλειά γενικά, αλλά µετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε Page 9

1086 1087 1088 1089 1091 1093 - και στη δεύτερη κλήση της malloc πρέπει να ελέγχεις αν επέστρεψε - να σχολιάζεις τον κώδικά σου σύµφωνα µε το πρότυπο σχολιασµού - Λάθος στον αλγόριθµο εύρεσης θέσεων. Έπρεπε να βγαίνεις από το πρώτο for αµέσως µόλις εντόπιζες την πρώτη εµφάνιση, και το δεύτερο for έπρεπε να ξεκινά από one+1 - Υπερβολικά σχόλια. Δε χρειάζεται να βάζεις σχόλιο σε κάθε γραµµή, γιατί και ο κώδικας "χάνεται" και τα σχόλια δεν προσφέρουν χρήσιµες πληροφορίες. Αντίθετα, έπρεπε να έχεις σχόλια συναρτήσεων. Διάβασε το φυλλάδιο σχολιασµού. -Πρόσεχε πολύ την στοίχιση. -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε -Δεν τερµατίζεις το string µε '\0' -Δεν υπάρχουν σχόλια συναρτήσεων! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) - Άσχηµη στοίχιση - Δεν υπάρχουν σχόλια συναρτήσεων - Δεν απελευθερώνεται η µνήµη για το string που κατασκεύασες - Λάθος στον αλγόριθµο : τα pos1, pos2 έχουν την ίδια τιµή -Μετά από κάθε κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Δεν αποδεσµέυεις µε free όλη την µνήµη που δέσµευσες. -Η σταθερά για το µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Το µέγεθος του νέου string είναι πολύ µεγαλύτερο από όσο θα ήταν αρκετό. Έπρεπε να το υπολογίσεις σαν mikos=right-left. - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση findpart. - Δεν ελέγχεις την τιµή που επιστρέφει η συνάρτηση malloc µετά την κλήση αυτής στην συνάρτηση findpart. Εάν αυτή είναι ίση µε NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. Page 10

1095 1097 1098 οριακά -Η σταθερά για το µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Δεν υπολογίζεις σωστά το µέγεθος του νέου string. Έπρεπε να το υπολογίσεις σαν µέγεθος="η διαφορά των θέσεων των δύο εµφανίσεων του χαρακτήρα που ψάχνουµε" και να δεσµεύσεις τον αντίστοιχο χώρο στην µνήµη.. -Διάβασε το φυλλάδιο για τον τρόπο προσθήκης σχολίων σε συναρτήσεις (pre-post conditions). - Αντιγραφή - Δεν αποθηκεύεις το αποτέλεσµα της findpart - Δεν υλοποιείς τη findpart 1099 Δεν παρέδωσε 1100 1101 1102 1103 1104 - Δεν απελευθερώνεις ποτέ τη δυναµικά δεσµευµένη µνήµη - Δε δηµιουργείς σωστά το νέο string (περιέχει επιπλέον χαρακτήρες) - Δεν τερµατίζεις το νέο string µε '\0' -Έπρεπε να δεσµέυσεις δυναµικά και την µνήµη του αρχικού string και να το κάνεις free µετά. -Διάβασε το φυλλάδιο για τον τρόπο προσθήκης σχολίων σε συναρτήσεις (pre-post conditions). - Δεν απελευθερώνεις την µνήµη που έχει δεσµευτεί για το string που δηµιουργεί η συνάρτηση findpart. Η αποδέσµευση θα έπρεπε να γίνεται στην συνάρτηση main. - Σε περίπτωση που η συνάρτηση malloc επιστρέψει NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. - Το πρόγραµµα δεν κάνει compile -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε - αλλά γενικά καλή δουλειά Page 11

1105 1109 - Δεν είναι λάθος ο τρόπος που δεσµεύεις µνήµη για το string, αλλά η συνεχής χρήση της realloc επιβαρύνει το πρόγραµµα υπολογιστικά, χωρίς τελικά να προσφέρει κάτι όσον αφορά τη µνήµη που χρησιµοποιείται. - Δεν υπάρχουν σχόλια συναρτήσεων. - Το str2 έπρεπε να είναι δυναµικός πίνακας - Δεν απελευθερώνεις µνήµη - Τα σχόλια συναρτήσεων έπρεπε να είναι πάνω από τη συνάρτηση - Άσχηµη στοίχιση - Δεσµεύεις λίγο παραπάνω µνήµη από όσο πρέπει - Λάθος στον αλγόριθµο εύρεσης των θέσεων. Τα pos2, pos1 είναι ίσα. - Δεν τερµατίζεις το string µε '\0' - Λάθος στον αλγόριθµο αντιγραφής: το νέο string περιέχει και τους χαρακτήρες που το οριοθετούν - Το output του προγράµµατός σου δεν παρουσιάζεται ακριβώς όπως το ζητούµενο. 1110 1111 1113 οριακά -Το πρόγραµµα σου δεν λειτουργεί σωστά. Δεν εκτυπώνεται καθόλου η νέα συµβολοσειρά. -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε -Έπρεπε να χρησιµοποιήσεις την συνάρτηση strlen για να βρεις το µέγεθος της συµβολοσειράς. -Λάθος στον αλγόριθµο εύρεσης των 2 πρώτων εµφανίσεων του χαρακτήρα. --Οι thesi_1st και thesi_2nd παίρνουν την ίδια τιµή. -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Το output του προγράµµατος σου δεν ταιριάζει καθόλου µε το output που σας δίνεται! -Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο. (Διάβασε καλά το φυλλάδιο!) - Άσχηµη στοίχιση - Δεν υπάρχουν σχόλια συναρτήσεων - Δεν απελευθερώνεται η µνήµη για το string που κατασκεύασες - Λάθος στον αλγόριθµο εύρεσης των θέσεων και στην αντιγραφή των χαρακτήρων - Δεν τερµατίζεις το string µε '\0' - Ο έλεγχος στην εντολή for της συνάρτησης findpart θα έπρεπε να είναι '' i < thesi2 thesi1 '' ώστε να µην αντιγράφεις και την δεύτερη εµφάνιση του χαρακτήρα. Page 12

1114 1115 1116 οριακά - Η µνήµη που δεσµεύεις στην συνάρτηση FindPart για το αλφαριθµητικό newstr δεν αποδεσµεύεται ποτέ καθώς η εντολή free στην συνάρτηση δεν εκτελείται ποτέ αφού βρίσκεται µετά την αντίστοιχη εντολή return. - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση FindPart. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Σε περίπτωση που η συνάρτηση malloc επιστρέψει NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. - Αρκετή προσοχή στην στοίχιση. - Η συνάρτηση έπρεπε να λέγεται findpart. Να ακολουθείς τις οδηγίες - Όταν η malloc επιστρέφει NULL, το πρόγραµµα πρέπει να τερµατίζει. Όπως το έχεις τώρα, αν η malloc αποτύχει (στη main), το πρόγραµµα θα προσπαθήσει έτσι κι αλλιώς να κάνει free το οποίο θα παράγει runtime error. Οµοίως στη findpart, αν η malloc επέστρεωε NULL, δεν πρέπει να κάνεις free (δε µπορεις να αποδεσµεύσεις µνήµη που δε δεσµεύτηκε ποτέ) - Το output δεν παρουσιάζεται ακριβώς όπως στα testcases - Δεν τερµατίζεις το string µε '\0' - Κατά τα άλλα, πολύ καλή δουλειά 1117 Δεν παρέδωσε 1118 1119 1120 -Η σταθερά για το µέγιστο µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Δεν αποδεσµέυεις µε free όλη την µνήµη που δέσµευσες. -Το νέο string δεν έχει σαν τελευταίο χαρακτήρα το '\0'. -Όταν πας να δεσµεύσεις δυναµικά την µνήµη, η µεταβλητή που θα βάλεις µέσα στην malloc πρέπει να έχει τιµή. Διαφορετικά, µπορεί να έχει οτιδήποτε µε αποτέλεσµα να µην τρέχει σωστά το πρόγραµµα, ΟΠΩΣ ΓΙΝΕΤΑΙ ΣΤΟ ΔΙΚΟ ΣΟΥ. -Διάβασε το φυλλάδιο για τον τρόπο προσθήκης σχολίων σε συναρτήσεις (pre-post conditions). - Μην αγνοείς τα warnings του compiler: σε ειδοποιούν για σοβαρά λάθη. - Πολύ καλή δουλειά και µε την υλοποίηση αφού χρησιµοποιείς δείκτες για τις θέσεις των εµφανίσεων αλλά και µε τα σχόλια - Δεν τερµατίζεις το string µε '\0' Page 13

1121 1122 - και στη δεύτερη κλήση της malloc πρέπει να ελέγχεις αν επέστρεψε - αντί για strncpy(str_new,str + thesh1,new); θα έπρεπε να έχεις strncpy(str_new,str + thesh1+1,new-1); για να ανιτγράφεις ακριβώς όλους τους ενδιάµεσους χαρακτήρες - αντί για str_new[thesh2 1]='\0'; θα έπρεπε να έχεις str_new[thesh2 - thesh1 1]='\0'; γιατί η thesh2 µπορεί να βρίσκεται οπουδήποτε µέσα στην αρχική συµβολοσειρά ενώ εσύ έχεις δεσµεύσει µόνο thesh2 thesh1 θέσεις για τη νέα συµβολοσειρά. - Η συνάρτηση findpart δεν λειτουργεί σωστά. Οι δύο εµφανίσεις του επιθυµητού χαρακτήρα δεν εντοπίζονται σωστά. Η εντολή break θα έπρεπε να βρίσκεται εντός της εντολής if ώστε να τερµατίζεις την επανάληψη µόλις βρεις την αντίστοιχη εµφάνιση. - Το νέο string δεν αρχικοποιείται σωστά. Ακόµη και εάν έβρισκες σωστά τις διευθύνσεις των θέσεων του χαρακτήρα, η αρχικοποίηση δεν θα ήταν σωστή καθώς οι µεταβλητές t και i δεν αρχικοποιούνται σωστά. - Δεν τερµατίζεις το string που δηµιουργείται. - Δεν ελέγχεις την τιµή που επιστρέφει η συνάρτηση malloc µετά τις δύο κλήσεις αυτής. Εάν η τιµή είναι ίση µε NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. - Τα όρια στα δύο for loops στην συνάρτηση findpart δεν είναι σωστά. Θα έπρεπε να έχεις χρησιµοποιήσει την συνάρτηση strlen ώστε να έχεις βρει το πραγµατικό µήκος της συµβολοσειράς. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. 1123 Δεν παρέδωσε 1124 -Μην αγνοείς τα warnings-σε προειδοποιούν για σηµαντικά λάθη! -Το πρόγραµµα σου δεν λειτουργεί σωστά. -Από την στιγµή που δεν µπορείς να χειριστείς τόσο καλά τους δείκτες θα µπορούσες να είχες δηλώσει τις µεταβλητές thesi1,thesi2 ως int και να κρατούσαν έτσι την 1 η και 2 η αντίστοιχα εµφάνιση του χαρακτήρα στην συµβολοσειρά! -Έπρεπε να χρησιµοποιήσεις την συνάρτηση strlen για να βρεις το µέγεθος της συµβολοσειράς. -Δεσµεύεις λιγότερο χώρο από όσο χρειάζεσαι µε αποτέλεσµα να δηµιουργούνται προβλήµατα στο πρόγραµµα σου! -Δεν αποθηκεύεις στη νέα συµβολοσειρά το τµήµα της αρχικής συµβολοσειράς που βρίσκεται µεταξύ των δύο εµφανίσεων του χαρακτήρα. - Δεν τερµατίζεις το string µε '\0' -Δεν απελευθερώνεις την µνήµη για κανένα από τα string που δεσµεύεις. -Να χρησιµοποιείς περιγραφικά ονόµατα µεταβλητών! -Το output του προγράµµατος σου δεν ταιριάζει καθόλου µε το output που σας δίνεται! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Page 14

1126 1127 1128 1129 1130 - Ξαναδιάβασε τη θεωρία για τοπικές µεταβλητές. H string_new δεν έχει καµία σχέση µε τη main. Το free(string_new) έπρεπε να είναι free(klisi) - Λάθος στον αλγόριθµο εύρεσης θέσεων (στο while) - Το "\0" ειναι string. Ο τερµατικός χαρακτήρας είναι '\0' - Η findpart δεν έπρεπε να εκτυπώνει τίποτα. - Άσχηµη στοίχιση -Ξαναδιάβασε τη θεωρία σχετικά µε τοπικές µεταβλητές και το εύρος τους. Το str2 της findpart δεν είναι "ορατό" στη main. - Μην αγνοείς τα warnings του compiler - σε ειδοποιούν για σηµαντικά λάθη. - Δεν τερµατίζεις το string µε '\0' - Λάθος στον αλγόριθµο εύρεσης θέσεων. Τα position1, position2 παίρνουν την ίδια τιµή - Καλή δουλειά στα σχόλια οριακά -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Δεν αποδεσµέυεις µε free ΟΛΗ την µνήµη που δέσµευσες. -Το νέο string δεν έχει σαν τελευταίο χαρακτήρα το '\0'. -Στον υπολογισµό του µεγέθους του πίνακα δεν χρειαζόταν το -1. Όπως το έχεις δεσµεύεις λιγότερη µνήµη απ'όση χρειάζεσαι-- >ΠΡΟΒΛΗΜΑ! -Διάβασε το φυλλάδιο για τον τρόπο προσθήκης σχολίων σε συναρτήσεις (pre-post conditions). -Η σταθερά για το µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Δεν έχεις καθόλου ΣΧΟΛΙΑ! οριακά - Δε δεσµεύεις αρκετή µνήµη για τη συµβολοσειρά - Δεν τερµατίζεις τη συµβολοσειρά µε '\0' Page 15

1131 1133 1135 Sheet1_2 -Το πρόγραµµα σου δεν λειτουργεί σωστά. Συγκεκριµένα, δεν εκτυπώνει τον τελευταίο χαρακτήρα της νέας συµβολοσειράς. Αυτό οφείλεται σε λογικό λάθος στην for (έπρεπε i < pos[1]; Και όχι i < pos[1]-1;) -Πρόσεχε πως δηλώνεις την διάσταση του πίνακα pos! Οι πίνακες στη C πρέπει να έχουν σταθερό µέγεθος. -Δεν τερµατίζεις σωστά την συµβολοσειρά. Θα έπρεπε new_string[pos[1]- pos[0]-1]='\0'; -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",string); -Το output του προγράµµατος σου δεν ταιριάζει µε το output που σας δίνεται! -Πρόσεχε την στοίχιση! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) - Τα όρια στις δύο πρώτες εντολές for της συνάρτησης findpart δεν είναι σωστά. Αντί του SIZE, έπρεπε να χρησιµοποιήσεις την συνάρτηση strlen ώστε να βρεις το πραγµατικό µήκος της συµβολοσειράς. - Δεσµεύεις περισσότερο χώρο από αυτόν που χρειάζεσαι πραγµατικά. Για το νέο string απαιτούνται thesi2 thesi1 χαρακτήρες. - Ο χαρακτήρας τερµατισµού δεν τοποθετείται στην σωστή θέση. Η σωστή θέση είναι istr[ thesi2 thesi1 1 ]. - Δεν αποδεσµεύεις την µνήµη που έχεις δεσµεύσει για την µεταβλητή str στην συνάρτηση main. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. οριακά - metritis>1 αυτή η συνθήκη δε γίνεται ποτέ αληθής οπότε το pos2 δε παίρνει ποτέ τιµή γι αυτό και σου πετάει segmantation fault - Δεν ελευθερώνεις τη µνήµη που δέσµευσες - τα σχόλια για κάθε συνάτηση µπαίνουν πριν από τη συνάρτηση Page 16

1136 - Λάθη στην κλήση συναρτήσεων. Γιατί καλείς τη findpart δύο φορές? - Δε δεσµεύεις µνήµη για το str1 - Λάθος στον αλγόριθµο εύρεσης θέσεων. Έπρεπε να βγαίνεις από το πρώτο loop µόλις βρίσκεις το χαρακτήρα. - Δεσµεύεις λίγο περισσότερο χώρο από ότι χρειάζεται - Δεν τερµατίζεις το string µε '\0' - Η findpart έπρεπε να επιστρέφει το νέο string 1137 Δεν παρέδωσε 1139 οριακά - Άσχηµη στοίχιση - Τα σχόλια συναρτήσεων δεν ακολουθούν τις προδιαγραφές - Δεν απελευθερώνεται η µνήµη για το string που κατασκεύασες - Λάθος στον αλγόριθµο εύρεσης των θέσεων.έπρεπε να βγαίνεις από το loop µέσα στο δεύτερο if. - Το output του προγράµµατός σου δεν παρουσιάζεται ακριβώς όπως το ζητούµενο. 1141 -Το πρόγραµµα σου δεν λειτουργεί σωστά. Δεν εκτυπώνεται καθόλου η νέα συµβολοσειρά αλλά συνέχεια το null. -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε -Δεν απελευθερώνεις την µνήµη που δεσµεύτηκε για τη συµβολοσειρά που επιστρέφει η findpart. Δηλαδή αφού κληθεί η συνάρτηση και επιστραφεί η συµβολοσειρά έπρεπε να είχες κάνει free(result); -Λάθος στον αλγόριθµο εύρεσης των 2 πρώτων εµφανίσεων του χαρακτήρα. --Οι δυο for θα µπορούσαν (και θα ήταν καλύτερα) να ήταν ανεξάρτητες µεταξύ τους. --Γιατί βάζεις return 0; µέσα στην for? -Δεν αποθηκεύεις στη νέα συµβολοσειρά το τµήµα της αρχικής συµβολοσειράς που βρίσκεται µεταξύ των δύο εµφανίσεων του χαρακτήρα. --Έπρεπε str[l]=simboloseira[p]; και όχι str[p]=simboloseira[l]; --Επίσης για να εµφανίζεται ο τελευταίος χαρακτήρας στην συµβολοσειρά σου έπρεπε p<second_appearance; -Δεν τερµατίζεις σωστά το string σου! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Page 17

1142 1144 1145 1146 1148 οριακά - Στην αντιγραφή του ενδιάµεσου τµήµατος στη νέα συµβολοσειρά θα έπερεπε να ξεκινάς να αντιγράφεις από τη θέση 0 και όχι από τη θέση first_char - Δεν ελευθερώνεις τη µνήµη που δέσµευσες πολύ οριακά -Η σταθερά για το µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Δεν αποδεσµέυεις µε free όλη την µνήµη που δέσµευσες. -Το νέο string δεν έχει σαν τελευταίο χαρακτήρα το '\0'. -Ο compiler εµφανίζει warning! Δεν έβαλες το return 0 στην main!!! - Να δίνεις περιγραφικά ονόµατα στις µεταβλητές -To output αρχείο σου ταιριάζει ακριβώς µε το output αρχείο που σας δίνεται. -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) -Μετά από κάθε κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Να χρησιµοποιείς πιο καλά ονόµατα για τις µεταβλητές σου. -Εκτύπωση περιττών µηνυµάτων. -Το πρόγραµµά σου δεν κάνει compile. Πρόσεξε, το '\0' θέλει '' γύρω του. -Δεν βρίσκεις σωστά τις δύο εµφανίσεις του χαρακτήρα. Το second_time θα είναι ίσο µε το first_time. Προσπάθησε να καταλάβεις το γιατί. -Στις δύο for δεν έπρεπε να βάλεις σαν όριο το WORDSIZE (που είναι το µέγιστο µήκος του wordlist) αλλά το πραγµατικό µέγεθος του wordlist (βρίσκεται µε την strlen ή την υλοποιείς κάπως). Πρόσεξε, όπως το έχεις προσπελαύνεις µνήµη που δεν σου ανήκει. -Διάβασε το φυλλάδιο για τον τρόπο προσθήκης σχολίων σε συναρτήσεις (pre-post conditions). Page 18

1149 1150 1152 1155 οριακά - Το output του προγράµµατός σου δεν παρουσιάζεται ακριβώς όπως το ζητούµενο. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη - Κώδικας µετά το return δεν εκτελείται ποτέ - Δεν τερµατίζεις τη συµβολοσειρά µε '\0' - Δεσµεύεις περισσότερη µνήµη από όσο χρειάζεται. - Τα σχόλια συναρτήσεων πρέπει να βρίσκονται πριν τη συνάρτηση. οριακά - Η συνάρτηση findpart δεν λειτουργεί σωστά. Αυτό οφείλεται στην αρχικοποίηση i = firstletter στην δεύτερη εντολή for, µε αποτέλεσµα να ξεκινάς την αναζήτηση από την θέση όπου υπάρχει η πρώτη εµφάνιση του χαρακτήρα. Μετά το τέλος του δεύτερου loop είναι secondletter = firstletter. Δες την αντίστοιχη λύση. - Όταν χρησιµοποιείς την συνάρτηση malloc, θα πρέπει να ελέγχεις το αποτέλεσµα που επιστρέφεται. Σε περίπτωση που η συνάρτηση δεν βρει διαθέσιµη µνήµη, επιστρέφει NULL οπότε πρέπει να τερµατίσεις το πρόγραµµα. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. - Αρκετή προσοχή στην στοίχιση. -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Η µνήµη που δεσµεύτηκε για τη συµβολοσειρά που επιστρέφει η findpart έπρεπε να αποδεσµεύεται στην main και όχι µέσα στην συνάρτηση. Δηλαδή αφού κληθεί η συνάρτηση και επιστραφεί η συµβολοσειρά έπρεπε να κάνεις free(simvolosira); - Δεν τερµατίζεις το string µε '\0' -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) - Δεν απελευθερώνεις τη µνήµη που δέσµευσες για τη συµβολοσειρά που επιστρέφει η findpart - Δεν τερµατίζεις το string µε '\0' - Πρόσεχε λίγο τη στοίχιση. Η πρώτη γραµµη της findpart έπρεπε να είναι πιο έξω. - Όταν δηµιουργείς το string, δεν πρέπει να περιλαµβάνεις το χαρακτήρα που το καθορίζει το "όριο" Page 19

1157 οριακά -Δεν δηµιουργείς σωστά το νέο string. -Η σταθερά για το µέγιστο µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Έπρεπε να δεσµέυσεις δυναµικά και την µνήµη του αρχικού string και να το κάνεις free µετά. -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Το νέο string δεν έχει σαν τελευταίο χαρακτήρα το '\0'. -Δεν έχεις καθόλου ΣΧΟΛΙΑ! (διορθωτική) - Μην αγνοείς τα warnings - σε προειδοποιούν για σηµαντικά λάθη. - Το newstr2 έπρεπε να είναι δείκτης. - Όταν διαβάζουµε χαρακτήρα µε το scanf, πρέπει να υπάρχει ένα κενό ανάµεσα στο " και στο % - Δεν έχεις καταλάβει καλά τη θεωρία για τοπικές µεταβλητές και τιµές που επιστρέφονται από συναρτήσεις. 1158 1159 1160 1161 - Το πρόγραµµα δεν κάνει compile - Η συνάρτηση FindPart δεν λειτουργεί σωστά. Η συνθήκη στην εντολή while όπου γίνεται η αντιγραφή δεν είναι σωστή καθώς µετά την αρχικοποίηση '' i = firstplace '' είναι '' i!= secondplace 1 ''. Εποµένως, στην γενική περίπτωση, το σώµα της εντολής while δεν εκτελείται ποτέ. Η ορθή συνθήκη είναι '' i!= secondplace ''. Δες την αντίστοιχη λύση. η σταθερά STRINGSIZE θα έπρεπε να έχει τιµή ίση µε 101. - Τα σχόλια των συναρτήσεων δεν συµµορφώνονται πλήρως µε αυτά του αντίστοιχου φυλλαδίου. - Προσοχή στην στοίχιση. -και στη δεύτερη κλήση της malloc πρέπει να ελέγχεις αν επέστρεψε - για το τµήµα της συµβολοσειράς θα έπρεπε να δεσµεύσεις protithesi-deuterithesi θέσεις µνήµης και όχι SIZE πολύ οριακά -Η σταθερά για το µέγιστο µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Στην findpart η malloc είναι λάθος. Δεσµεύεις χώρο για έναν χαρακτήρα και όχι για όσον χρειάζεσαι. -Δεν αποδεσµέυεις µε free όλη την µνήµη που δέσµευσες. - Δε δίνεις περιγραφικά ονόµατα στις µεταβλητές - Ασχηµη στοίχιση σε κάποια σηµεία Page 20

1171 1172 οριακά - και στην πρώτη κλήση της malloc πρέπει να ελέγχεις αν επέστρεψε - το '\0' θα µπορούσες να το προσθέσεις στη συµβολοσειρά και µετά το for όπου κάνεις την αντιγραφή των ενδιάµεσων γραµµατων - να σχολιάζεις τον κώδικά σου σύµφωνα µε τα πρότυπα σχολιασµού -Η σταθερά για το µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Το νέο string δεν έχει σαν τελευταίο χαρακτήρα το '\0'. -Δεν αποδεσµέυεις µε free την µνήµη που δέσµευσες. -Διάβασε το φυλλάδιο για τον τρόπο προσθήκης σχολίων σε συναρτήσεις (pre-post conditions). -Να χρησιµοποιείς πιο καλά ονόµατα για τις µεταβλητές σου. 1173 1176 Δεν παρέδωσε 1177 - Η συνάρτηση findpart δεν λειτουργεί σωστά. Η θέση της δεύτερης εµφάνισης του χαρακτήρα δεν υπολογίζεται σωστά. Στην αντίστοιχη εντολή else if θα έπρεπε να υπάρχει εντολή break ώστε να τερµατίζεται η επανάληψη. Επίσης, η αντιγραφή του αντίστοιχου τµήµατος δεν πραγµατοποιείται σωστά. Δες την αντίστοιχη λύση. - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση findpart. - Ο έλεγχος της τιµής που επιστρέφει η κλήσης της συνάρτησης malloc στην συνάρτηση findpart πρέπει να πραγµατοποιείται αµέσως µετά από αυτή και όχι στο τέλος της συνάρτησης. Σε περίπτωση που η συνάρτηση malloc επιστρέψει NULL, η αντίστοιχη µεταβλητή δεν µπορεί να χρησιµοποιηθεί. η σταθερά SIZE θα έπρεπε να έχει τιµή ίση µε 101. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. 1180 -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf ("%100s", string1); -Δεν υπάρχουν επαρκή σχόλια! Δεν ακολουθείς ακριβώς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) Page 21

1181 - Η συνθήκη '' i <= position_2 '' της εντολής for έχει ως αποτέλεσµα την αντιγραφή και της δεύτερης εµφάνισης του χαρακτήρα. - Δεν τερµατίζεις µε '\0' το string που παράγεται από την συνάρτηση findpart. - Δεν απελευθερώνεις την µνήµη που έχει δεσµευτεί για το string που δηµιουργεί η συνάρτηση findpart. Η αποδέσµευση θα έπρεπε να γίνεται στην συνάρτηση main. - Δεν ελέγχεις την τιµή που επιστρέφει η συνάρτηση malloc µετά την κλήση αυτής στην συνάρτηση findpart. Εάν αυτή είναι ίση µε NULL, θα έπρεπε να τερµατίζεις το πρόγραµµα. η σταθερά STRINGSIZE θα έπρεπε να έχει τιµή ίση µε 101. - Δεν υπάρχουν σχόλια στις συναρτήσεις. Η ύπαρξη σχολίων αποτελούσε απαίτηση της άσκησης. 1184 -Το πρόγραµµα σου δεν λειτουργεί σωστά. Δεν εκτυπώνεται καθόλου η νέα συµβολοσειρά. -Μετά από κάθε κλήση στη malloc πρέπει να ελέγχεις αν επέστρεψε -Λάθος στον αλγόριθµο εύρεσης των 2 πρώτων εµφανίσεων του χαρακτήρα. Κάθε φορά ελέγχει το χαρακτήρας σου ΜΟΝΟ µε τον πρώτο χαρακτήρα της συµβολοσειράς σου. -Δεν δεσµεύεις τον απαιτούµενο χώρο για την νέα σου συµβολοσειρά. Αν έλεγχες κάθε φορά τι σου επιστρέφει η malloc θα το είχες καταλάβει! -Δεν αποθηκεύεις στη νέα συµβολοσειρά το τµήµα της αρχικής συµβολοσειράς που βρίσκεται µεταξύ των δύο εµφανίσεων του χαρακτήρα. - Δεν τερµατίζεις το string µε '\0' -Όταν διαβάζουµε από το πληκτρολόγιο ένα αλφαριθµητικό µήκους µέχρι 100 χαρακτήρες η σύνταξη της scanf() είναι: scanf("%100s",str); -Το output του προγράµµατος σου δεν ταιριάζει καθόλου µε το output που σας δίνεται! -Δεν υπάρχουν καθόλου σχόλια! Δεν ακολουθείς τις προδιαγραφές πρότυπου σχολιασµού που περιγράφονται στο φυλλάδιο.(διάβασε καλά το φυλλάδιο!) 1185 Δεν παρέδωσε 1186 1187 οριακά -Η συνάρτηση findpart δεν δουλεύει σωστά. Ενώ είναι εντάξει µέχρι ένα σηµείο, δεν δηµιουργείς σωστά το νέο string. -Η σταθερά για το µέγιστο µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Μετά από ΚΑΘΕ κλήση της malloc πρέπει να κάνεις έλεγχο για NULL. -Διάβασε το φυλλάδιο για τον τρόπο προσθήκης σχολίων σε συναρτήσεις (pre-post conditions). - Θα ήταν καλό να έχεις δηλώσει το µέγιστο µήκος του αλφαριθµητικού ως Σταθερά είτε µε define είτε µε const. Page 22