====== Α Μάθημα Ανακεφαλαίωσης ====== ===== Εργαστηριακή διάλεξη ===== {{ :qna:hw:recap-a-whiteboard.pdf | Διαφάνειες }}\\ {{ :qna:hw:c-programming-exercise-a-recap.pdf | Εκφώνηση }} \\ {{ :qna:hw:smproject-life-3.zip | smProject-LIFE-3 }} \\ {{ :qna:hw:smproject-matrix-1.zip | smProject-MATRIX-1 }} \\ {{ :qna:hw:live-r-a.zip | Κώδικες }} ===== Εργασία A.1 ===== Τρίτος και τελευταίος κώδικας πάνω στο [[https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life|Conway's Game Of Life]] ==== Ζητούμενα ==== Δημιουργία της συνάρτησης ''bool boardInit(int rows, int cols, bool next[rows][cols])'' η οποία δίνει τιμές στα κελιά του grid βάσει του πίνακα ''next'' που πρέπει να έχει τις ίδιες διαστάσεις με το grid. Ουσιαστικά αντιγράφει τον πίνακα ''next'' στο grid. Δημιουργία της συνάρτησης ''bool calcNextGen(int rows, int cols, bool next[rows][cols])'' η οποία υπολογίζει βάσει του grid, την επόμενη γενιά του παιχνιδιού και την αποθηκεύει (__αυτό μας βοηθάει πολύ στην πραγματικότητα__) στον πίνακα next που πρέπει να έχει τις ίδιες διαστάσεις με το grid. ==== Έλεγχοι A.1.1 ==== Έλεγχοι ως προς την επιβεβαίωση των τιμών των παραμέτρων των συναρτήσεων. === Έλεγχοι === == Test A-1-1-a == Μία ή περισσότερες κλήσεις της ''boardInit'' με μηδενικό μήκος ή πλάτος (ή και τα δύο) __δεν επέστρεψαν ψευδές__ όπως ζητούνταν στην εκφώνηση. == Test A-1-1-b == Μία ή περισσότερες κλήσεις της ''boardInit'' με αρνητικό μήκος ή πλάτος (ή και τα δύο) __δεν επέστρεψαν ψευδές__ όπως ζητούνταν στην εκφώνηση. == Test A-1-1-c == Μία ή περισσότερες κλήσεις της ''calcNextGen'' με μηδενικό μήκος ή πλάτος (ή και τα δύο) __δεν επέστρεψαν ψευδές__ όπως ζητούνταν στην εκφώνηση. == Test A-1-1-d == Μία ή περισσότερες κλήσεις της ''calcNextGen'' με αρνητικό μήκος ή πλάτος (ή και τα δύο) __δεν επέστρεψαν ψευδές__ όπως ζητούνταν στην εκφώνηση. == Test A-1-1-e == Η κλήση της ''boardInit'' για αποδεκτές τιμές μήκους και πλάτους __**είτε** δεν επέστρεψε **αληθές**__ όπως ζητούνταν στην εκφώνηση, __**είτε** δεν έδωσε σωστές διαστάσεις στο grid__. == Test A-1-1-f == Η κλήση της ''calcNextGen'' με διαστάσεις πίνακα διαφορετικές από του grid __δεν επέστρεψε ψευδές__ όπως ζητούνταν στην εκφώνηση.\\ Προσοχή! Για να είναι έγκυρο αυτό το σφάλμα πρέπει να **μην** έχει παρουσιαστεί νωρίτερα το σφάλμα ''A-1-1-e''. Εάν έχει παρουσιαστεί το ''A-1-1-e'' θα πρέπει πρώτα να το λύσετε και μετά να λάβετε υπόψη σας αυτό τον έλεγχο (εάν ακόμα θα εμφανίζετα ως εσφαλμένος). ==== Ερώτημα A.1.2 ==== Έλεγχος λειτουργίας της συνάρτησης ''boardInit''. === Έλεγχοι === == Test A-1-2-a == Η συνάρτηση επιστρέφει **ψευδές** ενώ δεν θα έπρεπε για δεδομένο board. __Η δοκιμή αυτή δεν περιέχει έλεγχο των περιεχομένων του grid__. == Test A-1-2-b == Η συνάρτηση ενώ επιστρέφει __αληθές__ όπως θα έπρεπε για δεδομένο board, το __περιεχόμενο του grid **δεν** είναι το αναμενόμενο__. ==== Ερώτημα A.1.3 ==== Σύνθετοι έλεγχοι των συναρτήσεων ''boardInit'' και ''calcNextGen''. Αν και ο σκοπός είναι να ελεγχθεί η ''calcNextGen'', χρειάζεται και η ''boardInit'' ώστε να δημιουργηθούν τα grids.\\ Προσοχή! Εάν η ''boardInit'' δεν έχει περάσει όλες τις δοκιμές της ενότητας A.1.2 , __μπορεί να είναι αυτή η αιτία αποτυχίας των δοκιμών Α.1.3__. === Έλεγχοι === == Test A-1-3-a == Η συνάρτηση ''boardInit'' επιστρέφει **ψευδές** ενώ δεν θα έπρεπε για δεδομένο board. __Η δοκιμή αυτή δεν περιέχει έλεγχο των περιεχομένων του grid__. == Test A-1-3-b == Η συνάρτηση ''calcNextGen'' επιστρέφει **ψευδές** ενώ δεν θα έπρεπε για δεδομένο board. __Η δοκιμή αυτή δεν περιέχει έλεγχο του πίνακα με το αποτέλεσμα, αλλά μόνο την τιμή που επιστρέφει η ''calcNextGen''__. == Test A-1-3-c == Η συνάρτηση ''boardInit'' επιστρέφει **ψευδές** ενώ δεν θα έπρεπε για δεδομένο board. __Η δοκιμή αυτή δεν περιέχει έλεγχο των περιεχομένων του grid__. == Test A-1-3-d == Η συνάρτηση ''calcNextGen'' ενώ __ορθώς επιστρέφει αληθές__, όμως **δεν υπολογίζει σωστά την επόμενη γενιά** βάσει του grid. Αυτό, ανάλογα την συγκεκριμένη δοκιμή, μπορεί να αφορά την 1η ή μεταγενέστερη γενιά, συμβουλευτείτε το μήνυμα που εμφανίζεται μέσα στο //CLion//. == Test A-1-3-e == Η συνάρτηση ''calcNextGen'' ενώ __ορθώς επιστρέφει αληθές__, όμως **δεν υπολογίζει σωστά την επόμενη γενιά** βάσει του grid. Ενώ το νέο board θα έπρεπε **να είναι διαφορετικό**, αυτό μένει ίδιο με πριν! ===== Εργασία A.2 ===== Πρώτη εργασία πάνω στην άλγεβρα πινάκων. Τα μηνύματα στο CLion ακολουθούνται από τον πίνακα που δημιουργεί την αποτυχία της δοκιμής. ==== Ερώτημα A.2.1 ==== Δημιουργία της συνάρτησης ''bool isLTriangular(int R, int C, double A[R][C])'' η οποία απατά στο ερώτημα __αν ο πίνακας ''A'' είναι κάτω τριγωνικός__. === Έλεγχοι === == Test A-2-1-a == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **μηδενικές** γραμμές ή/και στήλες του πίνακα. == Test A-2-1-b == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **αρνητικές** γραμμές ή/και στήλες του πίνακα. == Test A-2-1-c == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **μη** κάτω τριγωνικό πίνακα μικρών διαστάσεων (3x3). == Test A-2-1-d == Η συνάρτηση __δεν επιστρέφει **αληθές** όπως θα έπρεπε__ για **όντως** κάτω τριγωνικό πίνακα μικρών διαστάσεων (3x3). == Test A-2-1-e == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **μη τετράγωνικό** πίνακα. == Test A-2-1-f == Η συνάρτηση __δεν ανιχνεύει σωστά την κάτω-τριγωνικότητα__ του πίνακα για κάπως μεγαλύτερο πίνακα (5x5). == Test A-2-1-g == Η συνάρτηση __δεν ανιχνεύει σωστά την κάτω-τριγωνικότητα__ του πίνακα για κάπως μεγαλύτερο πίνακα (12x12). ==== Ερώτημα A.2.2 ==== Δημιουργία της συνάρτησης ''bool add(int R, int C, double A[R][C], double B[R][C] , double sum[R][C])'' η οποία __αθροίζει τους πίνακες ''Α'' και ''Β'' στον πίνακα ''sum''__. === Έλεγχοι === == Test A-2-2-a == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **μηδενικές** γραμμές ή/και στήλες του πίνακα. == Test A-2-2-b == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **αρνητικές** γραμμές ή/και στήλες του πίνακα. == Test A-2-2-c == Η συνάρτηση __δεν επιστρέφει **αληθές** ή δεν παράγει το σωστό ("διπλάσιο") άθροισμα όπως θα έπρεπε__ για δεδομένο τετράγωνο πίνακα, με τον εαυτό του. == Test A-2-2-d == Η συνάρτηση __δεν επιστρέφει **αληθές** ή δεν παράγει το σωστό (μηδενικό) άθροισμα όπως θα έπρεπε__ για δεδομένο τετράγωνο πίνακα, με τον αντίθετό του. == Test A-2-2-e == Η συνάρτηση __δεν επιστρέφει **αληθές** ή δεν παράγει το σωστό άθροισμα όπως θα έπρεπε__ για δεδομένο **τετράγωνο** πίνακα, με έναν ίδιας διάστασης που όλα τα στοιχεία του είναι ίσα με το ''1''. == Test A-2-2-f == Η συνάρτηση __δεν επιστρέφει **αληθές** ή δεν παράγει το σωστό άθροισμα όπως θα έπρεπε__ για δεδομένο **μη\_τετράγωνο** πίνακα, με έναν ίδιας διάστασης που όλα τα στοιχεία του είναι ίσα με το ''1''. ==== Ερώτημα A.2.3 ==== Δημιουργία της συνάρτησης ''bool mul(int M, int N, int K, double A[M][N], double B[N][K] , double P[Μ][Κ])'' η οποία __πολλαπλασιάζει τους πίνακες ''Α'' και ''Β'' στον πίνακα ''P''__. === Έλεγχοι === == Test A-2-3-a == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **μηδενικές** γραμμές ή/και στήλες κάποιου πίνακα. == Test A-2-3-b == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **αρνητικές** γραμμές ή/και στήλες κάποιου πίνακα. == Test A-2-3-c == Η συνάρτηση __δεν επιστρέφει **ψευδές** όπως θα έπρεπε__ για **αρνητικές** δύο ή/και των τριών διαστάσεων των πινάκων σε γραμμές ή/και στήλες κάποιου πίνακα. == Test A-2-3-d == Η συνάρτηση __δεν επιστρέφει **αληθές ή το σωστό αποτέλεσμα** όπως θα έπρεπε__ για πολλαπλασιασμό τετραγωνικού πίνακα με διαγώνιο. == Test A-2-3-e == Η συνάρτηση __δεν επιστρέφει **αληθές ή το σωστό αποτέλεσμα** όπως θα έπρεπε__ για πολλαπλασιασμό τετραγωνικού πίνακα με τον μοναδιαίο. == Test A-2-3-f == Η συνάρτηση __δεν επιστρέφει **αληθές ή το σωστό αποτέλεσμα** όπως θα έπρεπε__ για πολλαπλασιασμό πίνακα γραμμή με τετραγωνικό πίνακα. == Test A-2-3-g == Η συνάρτηση __δεν επιστρέφει **αληθές ή το σωστό αποτέλεσμα** όπως θα έπρεπε__ για πολλαπλασιασμό μεταξύ δύο τετραγωνικών πινάκων. ==== Έλεγχοι A.2.4 ==== Αυτή η ενότητα ελέγχων περιέχει έναν συνδυαστικό έλεγχο των συναρτήσεων. === Έλεγχοι === == Test A-2-4-a == Οι συναρτήσεις ''add'' και ''mul'' __δεν επιστρέφουν συνδυαστικό το **αναμενόμενο** αποτέλεσμα όπως θα έπρεπε__ για για την επιβεβαίωση της παράστασης πινάκων ''Α*Β - Β*Α ≠ 0''.