====== Μάθημα 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'').