====== Μάθημα 5 ====== ===== Προετοιμασία ===== {{ :qna:hw:c-programming-l05-a.pdf | Διαφάνειες }}\\ [[https://youtube.com/playlist?list=PLKr1MzPLfrfciBTnfGwKmUV-dEjeUCIRt|Βίντεο]] ===== Εργαστηριακή διάλεξη ===== {{ :qna:hw:c-programming-l05-b.pdf | Διαφάνειες }} \\ {{ :qna:hw:c-programming-exercise-5.pdf | Εκφώνηση }} \\ {{ :qna:hw:smproject-triliza.zip | smProject-TRILIZA}} \\ {{ :qna:hw:smproject-rotate.zip |smProject-ROTATE}} \\ {{ :qna:hw:live-05.zip | Κώδικες }} ===== Εργασία 5.1 ===== Παιχνίδι Τρίλιζα Τα μηνύματα λάθους, ειδικά γι'αυτό το smProject είναι της μορφής: A ... board ... detected (XOX|O-X|XXO) δηλαδή εμφανίζουν το board ανά γραμμή όπως δόθηκε στη συνάρτησή σας. Το παραπάνω board είναι το: XOX O-X XXO Το ''-'' συμβολίζει το κενό κελί. ==== Ερώτημα 5.1.1 ==== Συνάρτηση ''isFinished'' === Έλεγχοι === == Test 5-1-1-a == Η συνάρτηση ''isFinished'' δεν επέστρεψε **αληθές** για το δεδομένο board που φαίνεται στο μήνυμα, ενώ έπρεπε. == Test 5-1-1-b == Η συνάρτηση ''isFinished'' δεν επέστρεψε **αληθές** για το δεδομένο board που φαίνεται στο μήνυμα, ενώ έπρεπε. Παρεμπιπτόντως το board αυτό δεν έχει "νόμιμη" διάταξη, αν και δεν παίζει ρόλο. == Test 5-1-1-c == Η συνάρτηση ''isFinished'' δεν επέστρεψε **ψευδές** για το δεδομένο board που φαίνεται στο μήνυμα, ενώ έπρεπε. == Test 5-1-1-d == Η συνάρτηση ''isFinished'' δεν επέστρεψε **ψευδές** για το δεδομένο board που φαίνεται στο μήνυμα, ενώ έπρεπε. Παρεμπιπτόντως το board αυτό δεν έχει "νόμιμη" διάταξη, αν και δεν παίζει ρόλο. ==== Ερώτημα 5.1.2 ==== Συνάρτηση ''isPlayablePos'' === Έλεγχοι === == Test 5-1-2-a == Η συνάρτηση ''isPlayablePos'' δεν επέστρεψε **αληθές** για **άδειο** board και για __αποδεκτές συντεταγμένες κελιού__, ενώ έπρεπε. == Test 5-1-2-b == Η συνάρτηση ''isPlayablePos'' δεν επέστρεψε **ψευδές** για **άδειο** board και για __μη αποδεκτές συντεταγμένες κελιού__, ενώ έπρεπε. == Test 5-1-2-c == Η συνάρτηση ''isPlayablePos'' δεν επέστρεψε **ψευδές** για το δεδομένο **πλήρες** board που φαίνεται στο μήνυμα, για απόδεκτές ή μη συντεταγμένες, ενώ έπρεπε. == Test 5-1-2-d == Η συνάρτηση ''isPlayablePos'' δεν επέστρεψε **ψευδές** για το δεδομένο **πλήρες** board που φαίνεται στο μήνυμα, για απόδεκτές ή μη συντεταγμένες, ενώ έπρεπε. Παρεμπιπτόντως το board αυτό δεν έχει "νόμιμη" διάταξη, αν και δεν παίζει ρόλο. == Test 5-1-2-e == Η συνάρτηση ''isPlayablePos'' επέστρεψε **ψευδές** αποτέλεσμα για το δεδομένο board που φαίνεται στο μήνυμα, __για απόδεκτές συντεταγμένες__ κελιού που __είναι ελεύθερο__. == Test 5-1-2-f == Η συνάρτηση ''isPlayablePos'' επέστρεψε **αληθές** αποτέλεσμα για το δεδομένο board που φαίνεται στο μήνυμα, __για απόδεκτές συντεταγμένες__ κελιού που __**δεν** είναι ελεύθερο__. == Test 5-1-2-g == Η συνάρτηση ''isPlayablePos'' επέστρεψε **ψευδές** αποτέλεσμα για το δεδομένο board που φαίνεται στο μήνυμα, __για απόδεκτές συντεταγμένες__ κελιού που __είναι ελεύθερο__. Παρεμπιπτόντως το board αυτό δεν έχει "νόμιμη" διάταξη, αν και δεν παίζει ρόλο. == Test 5-1-2-h == Η συνάρτηση ''isPlayablePos'' επέστρεψε **αληθές** αποτέλεσμα για το δεδομένο board που φαίνεται στο μήνυμα, __για απόδεκτές συντεταγμένες__ κελιού που __**δεν** είναι ελεύθερο__. Παρεμπιπτόντως το board αυτό δεν έχει "νόμιμη" διάταξη, αν και δεν παίζει ρόλο. ==== Ερώτημα 5.1.3 ==== Συνάρτηση ''canPlay'' === Έλεγχοι === == Test 5-1-3-a == Η συνάρτηση ''canPlay'' επέστρεψε **ψευδές** για **άδειο** board, για τον παίκτη ''Χ'' και για __αποδεκτές συντεταγμένες κελιού__. == Test 5-1-3-b == Η συνάρτηση ''canPlay'' επέστρεψε **αληθές** για **άδειο** board και για __**μη** αποδεκτές συντεταγμένες κελιού__. == Test 5-1-3-c == Η συνάρτηση ''canPlay'' επέστρεψε **αληθές** για **άδειο** board και για __αποδεκτές συντεταγμένες κελιού__, αλλά για τον παίκτη ''Ο'' (που δεν είναι η σειρά του να παίξει). == Test 5-1-3-d == Η συνάρτηση ''canPlay'' επέστρεψε **αληθές** για **λανθασμένο** και **πλήρες** board και για __αποδεκτές συντεταγμένες κελιού__, για κάποιον παίκτη ενώ έπρεπε. == Test 5-1-3-e == Η συνάρτηση ''canPlay'' επέστρεψε **ψευδές** για board που το παιχνίδι __είναι σε εξέλιξη__ και για __αποδεκτές συντεταγμένες κελιού__, για τον παίκτη του οποίου __είναι η σειρά του να παίξει__. == Test 5-1-3-f == Η συνάρτηση ''canPlay'' επέστρεψε **αληθές** για board που το παιχνίδι __είναι σε εξέλιξη__ και για __αποδεκτές συντεταγμένες κελιού__, για τον παίκτη του οποίου __**δεν** είναι η σειρά του να παίξει__. == Test 5-1-3-g == Η συνάρτηση ''canPlay'' επέστρεψε **αληθές** για εσφαλμένο board που __υπάρχουν κενά κελιά__ και για __αποδεκτές συντεταγμένες κελιού__, για τον παίκτη του οποίου __είναι η σειρά του να παίξει__. ==== Ερώτημα 5.1.4 ==== Συνάρτηση ''rc2int'' === Έλεγχοι === == Test 5-1-4-a == Η συνάρτηση ''rc2int'' επέστρεψε λανθασμένο αποτέλεσμα για κελί της 1ης γραμμής, όπου το αποτέλεσμα θα έπρεπε να είναι το **μηδέν**. == Test 5-1-4-b == Η συνάρτηση ''rc2int'' επέστρεψε λανθασμένο αποτέλεσμα για κελί της 1ης γραμμής, όπου το αποτέλεσμα θα έπρεπε να είναι **μονοψήφιος** ακέραιος. == Test 5-1-4-c == Η συνάρτηση ''rc2int'' επέστρεψε λανθασμένο αποτέλεσμα για κελί της 2ης ή 3ης γραμμής, όπου το αποτέλεσμα θα έπρεπε να είναι **διψήφιος** ακέραιος. == Test 5-1-4-d == Η συνάρτηση ''rc2int'' δεν επέστρεψε ''-1'' για κελί εκτός board. ==== Ερώτημα 5.1.5 ==== Συνάρτηση ''winningMove'' === Έλεγχοι === == Test 5-1-5-a == Η συνάρτηση ''winningMove'' δεν επέστρεψε ''-1'' για **άδειο** board. == Test 5-1-5-b == Η συνάρτηση ''winningMove'' δεν επέστρεψε ''-2'' για **πλήρες** και **σωστό** board. == Test 5-1-5-c == Η συνάρτηση ''winningMove'' δεν επέστρεψε ''-2'' για **πλήρες** και **λανθασμένο** board. == Test 5-1-5-d == Η συνάρτηση ''winningMove'' δεν επέστρεψε ''-2'' για **λανθασμένο** board, που περιέχει κενά κελιά. == Test 5-1-5-e == Η συνάρτηση ''winningMove'' δεν επέστρεψε ''-1'' για **σωστό** board, ενώ **δεν** υπάρχει κίνηση που να δίνει νίκη. == Test 5-1-5-f == Η συνάρτηση ''winningMove'' δεν επέστρεψε ''-2'' για **λανθασμένο** board, που __περιέχει κενά__. == Test 5-1-5-g == Η συνάρτηση ''winningMove'' δεν βρήκε την (υπαρκτή) κίνηση που δίνει τη νίκη για τον παίκτη που είχε σειρά σε **σωστό** board. == Test 5-1-5-h == Η συνάρτηση ''winningMove'' **βρίσκοντας** την **υπαρκτή** κίνηση που δίνει τη νίκη, δεν άφησε το board άθικτο όπως έπρεπε. == Test 5-1-5-i == Η συνάρτηση ''winningMove'' ψάχνοντας για την **μη υπαρκτή** κίνηση που δίνει τη νίκη, δεν άφησε το board άθικτο όπως έπρεπε. ===== Εργασία 5.2 ===== "Περιστροφή" πίνακα Τα μηνύματα λάθους, ειδικά γι'αυτό το smProject είναι της μορφής: testRotateArray(..., ..., ..., ...) FAILED : ... BRHKATE: 1 2 3 4 SWSTO: 5 6 7 8 δηλαδή κάτω από το μήνυμα με τη λέξη ''FAILED'', εμφανίζουν το αποτέλεσμα που **έχετε υπολογίσει** και κάτω από αυτό, το **σωστό αποτέλεσμα**. ==== Ομάδα ελέγχων 5.2.1 ==== Εσφαλμένα δεδομένα. === Έλεγχοι === == Test 5-2-1-a == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **ψευδές** αποτέλεσμα για **μηδενικό μήκος ''Ν''** σε __δεξιά__ περιστροφή. == Test 5-2-1-b == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **ψευδές** αποτέλεσμα για **αρνητικό μήκος ''Ν''** σε __δεξιά__ περιστροφή. == Test 5-2-1-c == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **ψευδές** αποτέλεσμα για **αρνητικό πληθος θέσεων ''k''** σε __δεξιά__ περιστροφή. == Test 5-2-1-d == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **ψευδές** αποτέλεσμα για **μηδενικό μήκος ''Ν''** σε __αριστερή__ περιστροφή. == Test 5-2-1-e == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **ψευδές** αποτέλεσμα για **αρνητικό μήκος ''Ν''** σε __αριστερή__ περιστροφή. == Test 5-2-1-f == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **ψευδές** αποτέλεσμα για **αρνητικό πληθος θέσεων ''k''** σε __αριστερή__ περιστροφή. ==== Ομάδα ελέγχων 5.2.2 ==== Σωστά δεδομένα για περιστροφή σε πλήθος θέσεων μικρότερο του μήκους του πίνακα (''k < N''). === Έλεγχοι === == Test 5-2-2-a == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **δεξιά** περιστροφή κατά **μηδενικό μήκος θέσεων ''k''**. Πάντα για πλήθος θέσεων μικρότερο του μήκους του πίνακα (''k < N''). == Test 5-2-2-b == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **δεξιά** περιστροφή κατά **μία θέση (''k''=1)**. Πάντα για πλήθος θέσεων μικρότερο του μήκους του πίνακα (''k < N''). == Test 5-2-2-c == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **δεξιά** περιστροφή κατά **περισσότερο από μία θέση (''k''>1)**. Πάντα για πλήθος θέσεων μικρότερο του μήκους του πίνακα (''k < N''). == Test 5-2-2-d == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **αριστερή** περιστροφή κατά **μηδενικό μήκος θέσεων ''k''**. Πάντα για πλήθος θέσεων μικρότερο του μήκους του πίνακα (''k < N''). == Test 5-2-2-e == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **αριστερή** περιστροφή κατά **μία θέση (''k''=1)**. Πάντα για πλήθος θέσεων μικρότερο του μήκους του πίνακα (''k < N''). == Test 5-2-2-f == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **αριστερή** περιστροφή κατά **περισσότερο από μία θέση (''k''>1)**. Πάντα για πλήθος θέσεων μικρότερο του μήκους του πίνακα (''k < N''). ==== Ομάδα ελέγχων 5.2.3 ==== Σωστά δεδομένα για περιστροφή σε πλήθος θέσεων μεγαλύτερη ή ίσο του μήκους του πίνακα (''k ≥ N''). === Έλεγχοι === == Test 5-2-3-a == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **δεξιά** περιστροφή κατά **μία θέση**. Για μήκος πίνακα ίσο με 1. == Test 5-2-3-b == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **δεξιά** περιστροφή κατά **περισσότερες θέσεις από το μήκος του πίνακα** (''k > N''). == Test 5-2-3-c == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **δεξιά** περιστροφή κατά **θέσεις όσες και το μήκος του πίνακα** (''k = N''). == Test 5-2-3-d == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **αριστερή** περιστροφή κατά **μία θέση**. Για μήκος πίνακα ίσο με 1. == Test 5-2-3-e == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **αριστερή** περιστροφή κατά **περισσότερες θέσεις από το μήκος του πίνακα** (''k > N''). == Test 5-2-3-f == Η συνάρτηση ''rotateArray'' δεν επιστρέφει **σωστό** αποτέλεσμα για **αριστερή** περιστροφή κατά **θέσεις όσες και το μήκος του πίνακα** (''k = N'').