Α. Μ. Βαθμός Σχόλια 1183 FAIL - Πρώτα ελέγχουµε το argc και µετά κάνουµε προσπάθεια να προσπελάσουµε το argv. - Λάθος στην ανάγνωση του πρώτου αρχείου. Κάθε φορά που κάνεις fgetc διαβάζεις τον επόµενο χαρακτήρα, πράγµα που δεν πρέπει να γίνεται σε όλες τις περιπτώσεις - Η συνθήκη (c <'a') && (c>'z') ε'ιναι πάντα ψευδής - Λάθος στην αποκωδικοποίηση 1194 1195 - Πρώτα ελέγχουµε το argc και µετά χρησιµοποιούµε το argv. - Δεν ελέγχεις αν έχει ανοιχτεί σωστά το δεύτερο αρχείο. - Αν τα αρχεία δεν έχουν ανοιχτεί επιτυχώς, το πρόγραµµα πρέπει να τερµατίζει. - θα µπορούσες να είχες αρχικοποιήσει int ascii = 'a' για να είναι πιο κατανοητό αυτό που θες να κάνεις (και τότε δε θα χρειαζόταν και σχόλιο). Οµοίως, αντί για 122 θα ήταν πολύ καλύτερα να χρησιµοποιούσες 'z' - Να ελέγχεις πρώτα την τιµή του argc - Δες και τη λύση για να δεις πώς θα µπορούσες να είχες αποφύγει τη συνεχή (και χρονοβόρα) ανάγνωση του αρχείου από την αρχή. 1238 1239 - Να κλείνεις πάντα τα αρχεία όταν τελειώνεις την επεξεργασία τους. 1240 - Δε χρησιµοποιείς argc, argv. 1241 FAIL - Μην αγνοείς τα warnings - έχεις αδικαιολόγητα λάθη. 1242 Αν είναι όλα ίδια, δεν είναι ξεκάθαρο ποιο αρχείο έχει πρόβληµα. 1247 FAIL - Αν ένα αρχείο δεν έχει ανοίξει επιτυχώς, ΔΕΝ πρέπει να προσπαθείς να διαβάσεις ή να γράψεις σε αυτό! - Δεν κλείνεις τα αρχεία στο τέλος - Για το χρόνο που είχες, έπρεπε να είχες κάνει καλύτερη δουλειά 1248 - Δε γράφεις στο τρίτο αρχείο. Page 1
1251 FAIL 1252 1253 - Πολύ καλή δουλειά κατά τα άλλα, µπράβο! 1255 - Καλή δουλειά 1256 1260 1261 1262 1267 FAIL - Άδειο email 1269 - Πολύ καλό πρόγραµµα κατά τα άλλα, µπράβο! 1274 - Η συνθήκη για έλεγχο του αποτελέσµατος του fopen είναι λάθος: θα είναι αληθής µόνο αν υπάρχει λάθος και στα 3 - Λάθος στην κωδικοποίηση - Πρώτα πρέπει να ελέγχεις αν το filec είναι NULL και µόνο αν δεν είναι να γράφεις σε αυτό. - Δε χειρίζεσαι καθόλου τους χαρακτήρες που δεν είναι µικρά γράµµατα. Το "Error" δε λέει τίποτα. - Πολύ καλή δουλειά κατά τα άλλα - Διαβάζεις µε ανάποδη σειρά τα δύο πρώτα αρχεία. Θα βοηθούσε να είχες δώσει πιο περιγραφικά ονόµατα στις µεταβλητές. - Πρώτα ελέγχουµε το argc και µετά χρησιµοποιούµε το argv. - Καλή δουλειά κατά τα άλλα, µπράβο - Κάνεις fclose ακόµη κι αν δεν έχουν ανοιχτεί τα αρχεία (στην περίπτωση που το argc είναι!= 4) - Απαράδεκτη στοίχιση - Δεν υπάρχουν µηνύµατα λάθους - ffush γίνεται µόνο σε αρχεία εξόδου. - Με βάση τον κώδικα που παρέδωσες, δε µε έπεισες ότι διόρθωσες µόνος σου το λάθος που είχες. - Μην ξεχνάς να ελέγχεις για NULL µετά από κάθε fopen. Αν δεν ανοιχτεί ένα από τα αρχεία, δεν είναι φανερό σε ποιο από τα 3 υπήρχε πρόβληµα. - Η συνθήκη για έλεγχο του αποτελέσµατος του fopen είναι λάθος: θα είναι αληθής µόνο αν υπάρχει λάθος και στα 3. Page 2
1276 1280 1281 1284 1286 1289 1292 1294 1295 FAIL 1297 - Οι έλεγχοι φαίνεται να είναι προσαρµοσµένοι στα συγκεκριµένα αρχεία ελέγχου. - Όταν διαβάζεις το charmap πρέπει να λαµβάνεις υπόψη σου ότι κάθε δεύτερος χαρακτήρας στο αρχείο είναι '\n' - Δεν αποκωδικοποιείς τους χαρακτήρες που δεν είναι µικρά γράµµατα. - Δεν κλείνεις ποτέ τα αρχεία 2 και 3 - Το τρίτο αρχείο έπρεπε να το έχεις ανοίξει αποκλειστικά για γράψιµο - Τα µηνύµατα λάθους δεν περιγράφουν τι λάθος έχει γίνει 1282 1283 - Τα περιεχόµενα του πίνακα έπρεπε να τα γράφεις στο τρίτο αρχείο, όχι στην οθόνη - Καλή δουλειά - Δεν ελέγχεις το argc. - Τα µηνύµατα λάθους που εκτυπώνει το πρόγραµµά σου δεν έχουν καµία σχέση µε τα λάθη που ανιχνεύθηκαν. - Δεν ελέγχεις το argc - Πολύ καλή δουλειά κατά τα άλλα, µπράβο - Το outfile έπρεπε να το ανοίγεις έξω από το loop. Με τον τρόπο που το έκανες, σε κάθε επανάληψη ανοίγει από την αρχή, και σβήνονται όλα τα προηγούµενα περιεχόµενα. Γι αυτό στο τέλος το αρχείο περιέχει µόνο την αποκωδικοποίηση του τελευταίου χαρακτήρα. - Δεν κλείνεις ποτέ το outfile. - Πρώτα ελέγχουµε το argc και µετά κάνουµε προσπάθεια να προσπελάσουµε το argv. - Άσχηµα ονόµατα µεταβλητών - Μη περιγραφικά ονόµατα µεταβλητών.τι είναι το g1 και τι το g2? - Λάθος έλεγχος : πρέπει να περιλαµβάνεις και τα a, z - Είναι λάθος να ελέγχεις την τιµή του pinakas[j].g1 χωρίς αυτό να έχει αρχικοποιηθεί - Τι ακριβώς προσπαθείς να κάνεις µε το διπλό for στο τέλος? - Δεν ελέγχεις το argc. Page 3
1303 FAIL 1306 1314 FAIL 1321 1328 FAIL 1330 1332 1336 - Το πρόγραµµα δεν κάνει compile - Τι είναι το flag και τι σηµαίνει το 55? - Δεν ελέγχεις το argc. - Τα πρώτα δύο αρχεία έπρεπε να τα ανοίγεις αποκλειστικά για διάβασµα (r) 1307 1309 FAIL - Να κλείνεις πάντα τα αρχεία όταν τελειώνεις την επεξεργασία τους. - Κώδικας όµοιος µε άλλου φοιτητή 1310 FAIL - Κώδικας όµοιος µε άλλου φοιτητή. - Αν το argc είναι λάθος το πρόγραµµα πρέπει να τερµατίζει - Το τρίτο αρχείο πρέπει να το ανοίγεις µε "w" όχι "a" - Δε γίνεται σωστά η αποκωδικοποίηση - Ανοίγεις τρεις φορές το ίδιο αρχείο. Δε φαίνεται να έχεις καταλάβει τι είναι το argv - Να κλείνεις πάντα τα αρχεία όταν τελειώνεις την επεξεργασία τους. - Η σωστή τιµή του argc είναι 4. - Δε χρησιµοποιείς argv - Η ανάγνωση των αρχείων, κωδικοποίηση κτλ, έπρεπε να γίνονται σε επανάληψη µέχρι το τέλος του αρχείου εισόδου. Μετά στο if(feof(foriginal)) δεν έπρεπε να τερµατίζεις το πρόγραµµα, αλλά απλά να βγαίνεις από το loop. - Μετά την επεξεργασία των αρχείων πρέπει να τα κλείνεις - Το f=h-'a' πρέπει να υπολογίζεται µόνο αν το h είναι µεταξύ 'a' και 'z'. - Δε χρησιµοποιείς argc, argv. - Μη γράφεις περισσότερες από µία εντολές ανά γραµµή - Να εκτυπώνεις µηνύµατα λάθους όταν υπάρχουν προβλήµατα µε τα αρχεία Page 4
1341 1346 - Καλή δουλειά, µπράβο. 1353 1354 1368 1369 1373 FAIL 1376 FAIL 1379 FAIL - Λάθος συνθήκη στον έλεγχο NULL µετά τις fopen. - Αντί για "kwdikopoihsh.txt" έπρεπε να χρησιµοποιείς argv[3] και να ελέγχεις για NUL - Λάθος υπολογισµός κωδικού - Η σωστή τιµή για το argc είναι 4 - Δεν ελέγχεις το argc - Να κλείνεις πάντα τα αρχεία µετά το τέλος της επεξεργασίας τους. - Μην ξεχνάς να ελέγχεις για NULL µετά από κάθε fopen. - Διαβάζεις µε ανάποδη σειρά τα δύο πρώτα αρχεία. Θα βοηθούσε να είχες δώσει πιο περιγραφικά ονόµατα στις µεταβλητές. - Πολύ καλή δουλειά κατά τα άλλα, µπράβο! - Δε χρησιµοποιείς argc, argv - Μην ορίζεις structs µέσα σε συναρτήσεις. - Μετά την εγγραφή στο cfptr3 έπρεπε να βγαίνεις από την επανάληψη. Το γεγονός ότι συνεχίζεις σε συνδυασµό µε την ανάθεση let=decode[i].letter; έχει ως αποτέλεσµα να βγαίνουν λάθος αποτελέσµατα. - Αν οποιοδήποτε από τα αρχεία δεν ανοίγει το πρόγραµµα έπρεπε να τερµατίζει. - segmentation fault στη γραµµή 29. Δεν πρέπει να αυξάνεις το i σε όλες τις περιπτώσεις - καταλήγει να είναι µεγαλύτερο του 26 και τελικά βγαίνεις εκτός ορίων πίνακα. - Αν δεν προλαβαίνεις να ολοκληρώσεις µια εντολή, µην την αφήνεις µισή. Καλύτερα να την έχεις σε σχόλια ή να τη σβήσεις τελείως, παρά να µην κάνει compile το πρόγραµµα. - Δε γίνεται σωστά ούτε η κωδικοποίηση ούτε η αποκωδικοποίηση - Ο σωστός αριθµός ορισµάτων είναι 4 - Δεν κλείνεις τα αρχεία που ανοίγεις - Ελλειπής λύση Page 5
- Πρώτα ελέγχουµε το argc και µετά χρησιµοποιούµε το argv. - Όταν διαβάζεις ένα αρχείο µέχρι τέλους και µετά θες να το ξαναδιαβάσεις από την αρχή, πρέπει να γυρίσεις το file pointer στην αρχή µε fseek και να κάνεις clear το eof flag. Αντί να µετράς πρώτα πόσους χαρακτήρες έχει το αρχείο και µετά να τους ξαναδιαβάζεις, γιατί δεν αντικαθιστάς το for της γραµµής 45 από ένα while(!feof(file1))? 1387 - Χειρίζεσαι µόνο τις περιπτώσεις που ο χαρακτήρας δεν είναι κεφαλαίο ή σηµείο στίξης 1392 - Οι έλεγχοι φαίνεται να είναι προσαρµοσµένοι στα συγκεκριµένα αρχεία ελέγχου. 1393 FAIL - Δεν αρχικοποιείς ποτέ το counter --> segmentation fault - Δε χειρίζεσαι καθόλου τους χαρακτήρες που δεν είναι µικρά γράµµατα. 1396 FAIL - segmentation fault γιατί δεν αρχικοποιείται ποτέ το i. - Το πρόγραµµα δεν ανιχνεύει µικρά αλφαβητικά. Οι έλεγχοι φαίνεται να είναι προσαρµοσµένοι στα συγκεκριµένα αρχεία ελέγχου. 1401 FAIL - Η συνθήκη για έλεγχο του αποτελέσµατος του fopen είναι λάθος: θα είναι αληθής µόνο αν υπάρχει λάθος και στα 2. - Έπρεπε να ελέγχεις και αν άνοιξε επιτυχώς το τρίτο αρχείο - Αν τα αρχεία δεν έχουν ανοίξει, τότε το πρόγραµµα πρέπει να τερµατίζει - Έπρεπε να χρησιµοποιείς το argv[3] για το τρίτο αρχείο - Λάθος στην κωδικοποίηση - fflush πρέπει να γίνεται µόνο στα αρχεία εξόδου. 1405 - Άσχηµη στοίχιση - Να εκτυπώνεις κατατοπιστικά µηνύµατα λάθους. - Να κλείνεις όλα τα αρχεία στο τέλος της επεξεργασίας τους. Page 6