ΠΟΛΥΤΕΧΝΕΙΟ
ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχ. και Μηχ. Υπολογιστών ΛΟΓ 102: Τεχνολογία Λογισμικού
Ι |
Ημερομηνία εξέτασης: |
Τρίτη 12 Σεπτεμβρίου 2000 |
Διάρκεια: | 3 ώρες |
Ποσοστό επί της συνολικής βαθμολογίας: |
70% |
Έστω n και m δυο φυσικοί αριθμοί. Ο μέγιστος κοινός διαιρέτης των n και m είναι ο μέγιστος φυσικός αριθμός που διαιρεί ακριβώς και τους δυο αυτούς αριθμούς. Συμβολίζεται ως ΜΚΔ(n, m). Ο μέγιστος κοινός διαιρέτης των n και m μπορεί να υπολογιστεί λαμβάνοντας υπόψη τις εξής δυο παρατηρήσεις που οφείλονται στον αρχαίο μαθηματικό Ευκλείδη:
Παράδειγμα
ΜΚΔ(5796, 4998) | = ΜΚΔ(4998, 798) | γιατί: | 5796 = 1 * 4998 + 798 |
= ΜΚΔ(798, 210) | γιατί: | 4998 = 6 * 798 + 210 | |
= ΜΚΔ(210, 168) | γιατί: | 798 = 3 * 210 + 168 | |
= ΜΚΔ(168, 42) | γιατί: | 210 = 1 * 168 + 42 | |
= ΜΚΔ(42, 0) | γιατί: | 168 = 4 * 42 + 0 | |
= 42 |
Να υλοποιήσετε τη συνάρτηση υπολογισμού του ΜΚΔ δυο φυσικών αριθμών με δυο τρόπους: επαναληπτικά και αναδρομικά. Η συνάρτηση θα πρέπει να δέχεται ως παραμέτρους τους αριθμούς n και m και να επιστρέφει τον αριθμό ΜΚΔ(n, m). Στην αναδρομική υλοποίηση δεν επιτρέπεται να χρησιμοποιήσετε τοπικές ή καθολικές μεταβλητές.
Να γραφεί συνάρτηση σε C που να εκτυπώνει και συγχρόνως να καταστρέφει ένα δυαδικό δένδρο. Ο τύπος του δένδρου και η επικεφαλίδα της ζητούμενης συνάρτησης δίνονται παρακάτω:
typedef struct node_tag { double data; struct node_tag * left, * right; } node, * tree; void printAndDestroy (tree t);
Η εκτύπωση των στοιχείων του δένδρου μπορεί να γίνει με οποιαδήποτε σειρά, αρκεί κάθε ένα στοιχείο να εμφανίζεται σε μια ξεχωριστή γραμμή. Υπόδειξη: η χρήση αναδρομής προσφέρεται για την υλοποίηση της συνάρτησης.
Καλή επιτυχία.
nickie@softlab.ntua.gr
).
12/9/2000
.