ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ: ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΞΕΙΔΙΚΕΥΣΗ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ (ΠΛΣ) ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ (ΠΛΣ50)
Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008 – ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ
ΘΕΜΑ 1 ΜΟΝΑΔΕΣ 2 Ποια τιμή θα επιστρέψει η κλήση της συνάρτησης doSomething(3); int doSomething(int n) { if ( n = 1 ) return 1; return 1 + doSomething(n – 1); }
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ Ε
1 2 3 4 7
ΘΕΜΑ 2 ΜΟΝΑΔΕΣ 2 Τί θα εμφανίσει στην οθόνη το παρακάτω πρόγραμμα #include <stdio.h> #include <stdlib.h> char *f( char *s) { return( s-- ); } int main(int argc, char *argv){ char *b = “hello world”; b = f ( ++b ); printf(“%s”, b); }
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ
hello world ello world llo world Τίποτε. Θα παράγει σφάλμα αναφοράς μνήμης.
ΘΕΜΑ 3 ΜΟΝΑΔΕΣ 4 Ποια πρόταση περιγράφει τη δήλωση της ακόλουθης μεταβλητής p int *(*p[10])(char *);
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Η μεταβλητή p είναι πίνακας που διατηρεί 10 δείκτες προς δείκτη σε συναρτήσεις που λαμβάνουν ως
παράμετρο δείκτη προς ακέραιο και επιστρέφουν δείκτη προς χαρακτήρα.
Β H μεταβλητή p είναι δείκτης σε πίνακα που διατηρεί 10 δείκτες σε συναρτήσεις που λαμβάνουν ως παράμετρο δείκτη σε χαρακτήρα και επιστρέφουν ακέραιο.
Γ Η μεταβλητή p είναι δείκτης σε δείκτη προς πίνακα 10 δεικτών προς συναρτήσεις που λαμβάνουν ως παράμετρο έναν δείκτη προς χαρακτήρα και επιστρέφουν δείκτη προς ακέραιο.
Δ Η μεταβλητή p είναι πίνακας που διατηρεί 10 δείκτες προς συναρτήσεις που λαμβάνουν ως παράμετρο δείκτη προς χαρακτήρα και επιστρέφουν δείκτη προς ακέραιο.
Ε Καμία από τις παραπάνω. Η δήλωση είναι συντακτικά λάθος.
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
2
ΘΕΜΑ 4 ΜΟΝΑΔΕΣ 4 Ποιά από τις παρακάτω συναρτήσεις εκτελεί την ίδια λειτουργία με την f . int f(char *s, char c) { char *s1 = s; while (*s1) { if (*s1 != c ) { ++s1; continue; } return s1 - s; } return -1; }
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α int f1(char *s, char c){
char *s1 = s; while (*s1++ != c && *s1) continue; if (*s1) return s1 - s; return -1; }
Β int f2(char *s, char c){ char *s1; for (s1 = s; *s1 && (*s1 != c); ++s1) ; return *s1 ? s1-s: -1; }
Γ int f3(char *s, char c) { char *s1 = s; for (;;) if ( *s1 && *s1++ == c ) return s1 - s; return -1; }
Δ int f4(char *s, char c){ char *s1 = s; while (*++s1 != c && *s1) continue; if (*s1) return s1 - s -1 ; return -1; }
ΘΕΜΑ 5 ΜΟΝΑΔΕΣ 3 Ποια είναι η τιμή του a[5] μετά την εκτέλεση του ακόλουθου κώδικα, όταν Ν=15; for (i = 0; i < N; i++) a[i] = N-1 - i; for (i = 0; i < N; i++) a[i] = a[a[i]];
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ Ε
5 9 0 1 14
ΘΕΜΑ 6 ΜΟΝΑΔΕΣ 5
Υποθέστε ότι σε μια στοίβα εκτελείται μια ακολουθία λειτουργιών που απαρτίζεται από λειτουργίες push και pop (με οποιαδήποτε εναλλαγή μεταξύ τους). Οι λειτουργίες push τοποθετούν με τη σειρά τους αριθμούς 0 μέχρι 9. Οι λειτουργίες pop εμφανίζουν την τιμή που αφαιρέθηκε από τη στοίβα. Ποια από τις ακόλουθες σειρές τιμών δε θα μπορούσε να εμφανιστεί;
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
3
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ
4 3 2 1 0 9 8 7 6 5 4 6 8 7 5 3 2 9 1 0 2 5 7 6 4 8 9 3 0 1 4 3 2 1 0 5 6 7 8 9
ΘΕΜΑ 7 ΜΟΝΑΔΕΣ 4 Έστω ότι μια στοίβα υλοποιείται με τον πίνακα s[0..10]. Στη στοίβα αυτή ένα στοιχείο δε σβήνεται από τον πίνακα όταν εξάγεται από τη στοίβα, αλλά αλλάζει μόνον η τιμή της μεταβλητής που δείχνει την κορυφή της στοίβας. Θεωρήστε την ακόλουθη σειρά ενεργειών στη στοίβα, κατά την οποία ένα γράμμα αντιστοιχεί στην λειτουργία push για αυτό το γράμμα και ένας αστερίσκος αντιστοιχεί στη λειτουργία pop από τη στοίβα. L A * S T I * N * F I R * S T * * O U * T * * * * * *
Ποια είναι τα περιεχόμενα των θέσεων s[0] μέχρι s[4] μετά την ολοκλήρωση της παραπάνω ακολουθίας λειτουργιών;
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ Ε
L S T F T L S T F Ι L A S F O L S T N I L A S T I
ΘΕΜΑ 8 ΜΟΝΑΔΕΣ 3 Ποια τιμή θα επιστρέψει η παρακάτω συνάρτηση εάν κληθεί με είσοδο τη ρίζα του παρακάτω δυαδικού δένδρου; int puzzle(link x) { if (x == NULL) return 0; else return max(puzzle(x->left), puzzle(x->right)); }
10
2 9
8
0
16
7
21
3
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ E
0 3 16 10 8
ΘΕΜΑ 9 ΜΟΝΑΔΕΣ 5
Έστω το δυαδικό δένδρο αναζήτησης του παρακάτω σχήματος. Ποια θα είναι η τελική μορφή του δένδρου μετά την εισαγωγή των κόμβων 7, 1, 55, 29 και 19 και τη διαγραφή των κόμβων 8, 37 και 15 με αυτή τη σειρά; Στην περίπτωση διαγραφής της ρίζας ενός δένδρου/υποδένδρου ακολουθείστε την προσέγγιση του βιβλίου «Introduction to Algorithms» (ΑΠ0).
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
4
50
15 62
5820
60
5
37
91
24
83
Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας
Σωστή απάντηση
50
19 62
5820
60
5 91
243 55
1 29
7
ΘΕΜΑ 10 ΜΟΝΑΔΕΣ 4
Σχεδιάστε το Δυαδικό Δέντρο Αναζήτησης που θα δημιουργηθεί εάν εισάγετε σε ένα αρχικά κενό δέντρο δεκατέσσερα αντικείμενα χαρακτήρων με τις παρακάτω τιμές για τα κλειδιά τους και με τη σειρά που δίνεται ακολούθως (αγνοήστε τα κενά): HOW ARE YOU TODAY Θεωρείστε ότι στην περίπτωση που οι τιμές δύο αντικειμένων είναι ίδιες το αντικείμενο που δεν έχει τοποθετηθεί ακόμα στο δένδρο τοποθετείται στο αριστερό υποδένδρο (μονάδες 2). Στη συνέχεια δώστε την preorder διαπέραση για το δέντρο που κατασκευάσατε (μονάδες 2).
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
5
Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας
Το δυαδικό δέντρο αναζήτησης που δημιουργείται είναι το εξής:
H
A O
OE
O
A
D
W
R Y
U Y
T
preorder διαπέραση: HAAEDOOOWRUTYΥ
ΘΕΜΑ 11 ΜΟΝΑΔΕΣ 5
Σχεδιάστε έναν αλγόριθμο ταξινόμησης n τυχαίων ακέραιων αριθμών ο οποίος να χρησιμοποιεί, ως δομή δεδομένων για την ταξινόμηση, ένα δυαδικό δένδρο αναζήτησης (μονάδες 3). Η πολυπλοκότητα χρόνου εκτέλεσης για τη καλύτερη και την χειρότερη περίπτωση του αλγορίθμου που σχεδιάσατε θα πρέπει να είναι Θ(nlgn) και Θ(n2), αντίστοιχα. Να αναφέρετε με σύντομη απόδειξη τις πολυπλοκότητες για τους χρόνους καλύτερης και χειρότερης περίπτωσης του αλγορίθμου που σχεδιάσατε (μονάδες 2). Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας Ο αλγόριθμος είναι ο εξής: TREE-‐SORT(A) Έστω ότι T είναι ένα άδειο δυαδικό δένδρο αναζήτησης και Α ένας πίνακας που περιέχει τους τυχαίους ακέραιους αριθμούς for i ← 1 to n do TREE-‐INSERT(T, A[i ]) INORDER-‐TREE-‐WALK(root[T ]) Χειρότερη περίπτωση: Θ(n2). Ισχύει όταν δημιουγείται μια γραμμική αλυσίδα κόμβων από την επαναλαμβανόμενη εισαγωγή κόμβων μέσω της συνάρτησης TREE-‐INSERT. Καλύτερη περίπτωση: Θ(nlgn). Ισχύει όταν δημιουργείται ένα δυαδικό δένδρο με ύψος Θ(lgn) από την επαναλαμβανόμενη εισαγωγή κόμβων μέσω της συνάρτησης TREE-‐INSERT.
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
6
ΘΕΜΑ 12 ΜΟΝΑΔΕΣ 4 Δίδεται το ακόλουθο ΔΡΔ.
Π1
Π2
Αποθήκη 1 Αποθήκη 2
Μ1
Μ2
Μ3
Μ4
Μ5
Π2
A,B
C
D
E,B
F
G
H
J
G
I
Ποιες από τις παρακάτω προτάσεις είναι αληθείς;
ΑΠΑΝΤΗΣΗ (επιλέξτε όσες από τις παρακάτω επιλογές είναι σωστές και σημειώστε τις στο φύλλο απαντήσεων) Α Η πηγή Π1 μπορεί να είναι λογισμικό (πρόγραμμα).
Β Η ροή εξόδου του Μ1 δεν μπορεί να περιέχει το δεδομένο Β.
Γ Ο μετασχηματισμός Μ2 μπορεί να είναι κέντρο δοσοληψιών.
Δ Ο μετασχηματισμός Μ4 είναι περιττός.
Ε Ο μετασχηματισμός Μ5 είναι περιττός.
ΣΤ Η αποθήκη 2 δεν μπορεί να είναι υποσύνολο της αποθήκης 1.
ΘΕΜΑ 13 ΜΟΝΑΔΕΣ 3 Έστω το παρακάτω ΔΜΚ που αναπαριστά τις καταστάσεις ενός λογισμικού ανελκυστήρα με αυτόματες πόρτες.
Αναµονή
Κλέισιµο πόρτας
Άνοιγµα πόρτας
Επιλογή ορόφου
1
2
3
4
5
6
Ποια είναι η σωστή επιλογή καταστάσεων και γεγονότων;
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α 1: επιλογή ορόφου, 2: επιλογή λάθος ορόφου, 3: πόρτες έκλεισαν, 4: κίνηση ανελκυστήρα, 5: πρόβλημα
εκκίνησης, 6: επιλογή ορόφου
Β 1: επιλογή λάθους ορόφου, 2: πόρτες δεν κλείνουν, 3: πόρτες έκλεισαν, 4: Έλεγχος παραβίασης βάρους, 5: άφιξη, 6: πόρτες άνοιξαν
Γ 1: επιλογή τρέχοντος ορόφου, 2: πόρτες δεν κλείνουν, 3: πόρτες έκλεισαν, 4: κίνηση ανελκυστήρα, 5: άφιξη, 6:
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
7
πόρτες άνοιξαν
Δ 1: επιλογή ισογείου, 2:πόρτες παραμένουν ανοιχτές, 3: πόρτες μισόκλειστες, 4: διαδικασίες έκτακτης ανάγκης, 5: τέλος εκτάκτων διαδικασιών, 6: πόρτες άνοιξαν
Ε 1: επιλογή τρέχοντος ορόφου, 2: πρόβλημα πόρτας, 3: κίνηση ανελκυστήρα, 4: τέλος κίνησης, 5: άφιξη, 6: επιλογή ορόφου
ΘΕΜΑ 14 ΜΟΝΑΔΕΣ 5 Εστω το ακόλουθο ΔΔΠ.
Ποιο από τα παρακάτω ΔΡΔ αντιστοιχεί σε αυτό το ΔΔΠ σύμφωνα με τη μεθοδολογία δομημένης ανάλυσης και σχεδίασης;
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων)
Α
Β
Μ1
Μ2
Μ3
Μ4
Μ5
Μ6
A
B
C
D F
H
I
J
E
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
8
Γ
Δ
ΘΕΜΑ 15 ΜΟΝΑΔΕΣ 4 Ένα πληροφοριακό σύστημα χρησιμοποιεί ένα μητρώο χρηστών για να πιστοποιεί τους χρήστες του. Οι υποψήφιοι νέοι (δυνητικοί) χρήστες υποβάλλουν τα στοιχεία τους και το σύστημα τα συγκρίνει με αυτά που είναι καταχωρημένα στο μητρώο εγγεγραμμένων χρηστών του. Η εγγραφή θεωρείται επιτυχής όταν τα στοιχεία του νέου χρήστη δεν υπάρχουν ήδη στο μητρώο εγγεγραμμένων χρηστών. Σε περίπτωση επιτυχούς εγγραφής το σύστημα ενημερώνει τον ενδιαφερόμενο με τα προσωπικά του στοιχεία πρόσβασης και ενημερώνει κατάλληλα το μητρώο εγγεγραμμένων χρηστών ώστε να μην είναι δυνατή η εγγραφή άλλου χρήστη με τα ίδια στοιχεία. Στην αντίθετη περίπτωση το σύστημα ενημερώνει τον ενδιαφερόμενο ότι δεν είναι επιτρεπτή η εγγραφή του. Με ποια στοιχεία πρέπει να συμπληρωθούν οι Ροές [1 -‐ 4] ώστε το ακόλουθο Δ.Ρ.Δ. να περιγράφει την παραπάνω διαδικασία;
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
9
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α (1): ΑΦΜ, Όνομα, Έτος Γέννησης, (2): ΑΦΜ, Όνομα, Έτος Γέννησης,
Πατρώνυμο, (3): ΑΦΜ, (4): Μήνυμα Β (1): ΑΦΜ, Όνομα, Έτος Γέννησης (2): Όνομα πρόσβασης, Κωδικός πρόσβασης, (3): ΑΦΜ,
(4): Μήνυμα Γ (1): Όνομα, Έτος Γέννησης (2): Όνομα πρόσβασης, Κωδικός πρόσβασης (3): Όνομα πρόσβασης, Κωδικός
πρόσβασης (4): Μήνυμα Δ (1): Όνομα, Έτος Γέννησης (2): Όνομα πρόσβασης (3): ΑΦΜ, (4): ΑΦΜ
Ε (1): Όνομα, Έτος Γέννησης (2): Μήνυμα (3): Όνομα, (4): ΑΦΜ
ΘΕΜΑ 16 ΜΟΝΑΔΕΣ 5 Δίνονται δύο διαγράμματα ροής δεδομένων από τη γραπτή εργασία Ε6, ως ακολούθως
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
ΧΡΗΣΤΗΣ (ΟΘΟΝΗ)
MENU
CHOICE
MEASUREMENTS ARCHIVE
MRECORD
T2ADD TO
ARCHIVE
T3DISPLAY
MEASUREMENTS
CHOICE=1
CHOICE=2
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
MDATA
MRECORD
DRECORD
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
ΧΡΗΣΤΗΣ (ΟΘΟΝΗ)
MENU
CHOICE
MRECORD
T2ADD TO
ARCHIVE
T3DISPLAY
MEASUREMENTS
CHOICE=1
CHOICE=2
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
MDATA
DRECORD
(Α) (Β) Να γράψετε την περιγραφή των λειτουργικών απαιτήσεων Τ2 και Τ3 στην περίπτωση του διαγράμματος (Α) και στην περίπτωση του διαγράμματος (Β) με τη μορφή "Περιγραφή -‐ Είσοδος -‐ Επεξεργασία -‐ Εξοδος" Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας
Περίπτωση (Α)
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
10
Απαίτηση 1 Περιγραφή: Ο χρήστης δίνει από το πληκτρολόγιο δεδομένα μετρήσεων και το λογισμικό τα αποθηκεύει σε αρχείο Είσοδοι: τα δεδομένα μετρήσεων από το πληκτρολόγιο Επεξεργασία: ετοιμασία της εγγραφής Εξοδοι: το ενημερωμένο αρχείο με τα δεδομένα μετρήσεων Απαίτηση 2 Περιγραφή: Διάβασμα και απεικόνιση των δεδομένων μετρήσεων στην οθόνη Είσοδοι: τα δεδομένα μετρήσεων από το αρχείο Επεξεργασία: ετοιμασία της εμφάνισης των δεδομένων Εξοδοι: τα δεδομένα μετρήσεων στην οθόνη Περίπτωση (Β) Απαίτηση 1 (όπως ακριβώς πριν) Απαίτηση 2 Περιγραφή: Διάβασμα και απεικόνιση των δεδομένων μετρήσεων στην οθόνη Είσοδοι: τα δεδομένα μετρήσεων από τον χρήστη Επεξεργασία: ετοιμασία της εμφάνισης των δεδομένων Εξοδοι: τα δεδομένα μετρήσεων στην οθόνη
ΘΕΜΑ 17 ΜΟΝΑΔΕΣ 6 Δίνονται και πάλι τα δύο διαγράμματα ροής δεδομένων από τη γραπτή εργασία Ε6:
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
ΧΡΗΣΤΗΣ (ΟΘΟΝΗ)
MENU
CHOICE
MEASUREMENTS ARCHIVE
MRECORD
T2ADD TO
ARCHIVE
T3DISPLAY
MEASUREMENTS
CHOICE=1
CHOICE=2
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
MDATA
MRECORD
DRECORD
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
ΧΡΗΣΤΗΣ (ΟΘΟΝΗ)
MENU
CHOICE
MRECORD
T2ADD TO
ARCHIVE
T3DISPLAY
MEASUREMENTS
CHOICE=1
CHOICE=2
ΧΡΗΣΤΗΣ (ΠΛΗΚΤΡΟΛΟΓΙΟ)
MDATA
DRECORD
(Α) (Β) Να κατασκευάσετε τα αντίστοιχα ΔΔΠ και να σχολιάσετε τη διαφορά τους. Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας
Για το (Α)
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
11
MAIN
Get_CHOICE Validate_C Run2 Run3
CHOICE
CH
OIC
E=1
CHOICE=2 CHOICECHOICE
Calc MRECORD
Put MRECORD
MR
ECO
RD
Get MDATA
MDA
TA
MD
ATA
MRECORD
Get MRECORD
Calc DRECORD
Put DRECORD
MRE
CORD DRECORD
MRECORD
DRECORD
Για το (Β)
MAIN
Get_CHOICE Validate_C
Run2
Run3
CHOICE
CHOICE=1
CHOICE=2
CHOI
CE
CHOICE
Calc MRECORD
MR
ECO
RD
Get MDATA
MDA
TA MD
ATA
Calc DRECORD
Put DRECORD
MRE
CORD DRECORD
MRECORD
DRECORD
Παρατηρούμε ότι στη δεύτερη περίπτωση η κλήση της "Run2" γίνεται είτε κατευθείαν από το μενού, είτε από την Run3. Αυτό οφείλεται στο γεγονός ότι στην περίπτωση αυτή οι μετασχηματισμοί Τ2 και Τ3 δεν επικοινωνούν μέσω της αποθήκης δεδομένων, αλλά άμεσα. Στην πράξη αυτό σημαίνει ότι κάθε φορά που θα καλείται η Run3 για να εμφανίσει μετρήσεις, θα καλείται και η Run2 για να τις διαβάσει, πράγμα που δεν είναι πρακτικό από την πλευρά του χρήστη.
ΘΕΜΑ 18 ΜΟΝΑΔΕΣ 3 Δίνεται ο παρακάτω κατευθυνόμενος γράφος.
Βρείτε τη σειρά με την οποία επισκέπτεται ο αλγόριθμος depth-‐first search τις κορυφές (η σειρά αφορά το πότε κάθε κορυφή γίνεται "γκρι" με βάση την σημειογραφία του ΑΠ0), θεωρώντας ότι ο depth-‐first search επιλέγει τις κορυφές με λεξικογραφική προτεραιότητα.
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ E
ΑΔΗΒΓΕΘΖΙ ΑΒΓΔΕΖΗΘΙ ΑΔΒΓΕΖΗΘΙ ΑΔΒΓΕΖΗΙΘ ΑΔΓΒΕΖΗΘΙ
Α
Β
Γ Δ Ε Ζ
Η
Θ
Ι
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
12
ΘΕΜΑ 19 ΜΟΝΑΔΕΣ 4
Δίνεται ο παρακάτω κατευθυνόμενος μη κυκλικός γράφος. Εφαρμόστε τον αλγόριθμο TOPOLOGICAL-‐SORT στον συγκεκριμένο γράφο και βρείτε τη σειρά τοποθέτησης των κόμβων στην τελική διάταξη, θεωρώντας ότι ο depth-‐first search επιλέγει τις κορυφές με λεξικογραφική προτεραιότητα. Ποια είναι η θέση του κόμβου Ε σε αυτή τη σειρά;
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ E
2 3 4 5 6
Η τελική διάταξη των κόμβων στον αλγόριθμο TOPOLOGICAL-‐SORT βασίζεται στο πότε οι κόμβοι γίνονται "μαύροι" σύμφωνα με τη σημειογραφία του ΑΠ0. Στο παρακάτω σχήμα φαίνονται οι δύο χρόνοι που αφορούν κάθε κόμβο, δηλαδή πότε αυτός γίνεται γκρι και πότε γίνεται μαύρος.
Με βάση τους παραπάνω χρόνους, η διάταξη των κόμβων είναι η εξής: ΒàΓàΑàΔàΕàΖàΗàΘàΙ
ΘΕΜΑ 20 ΜΟΝΑΔΕΣ 6 Έχουμε τρεις στύλους, Α, Β και Γ, και τρεις δίσκους, έναν μεγάλο, έναν μεσαίο και έναν μικρό. Οι δίσκοι βρίσκονται αρχικά στον αριστερό στύλο, όπως φαίνεται παρακάτω, με τον μεγάλο δίσκο κάτω, και τον μικρό επάνω.
Μπορούμε να μετακινούμε έναν δίσκο από έναν στύλο σε έναν άλλο, με την προϋπόθεση ότι στην προηγούμενη του θέση ήταν ο κορυφαίος δίσκος του στύλου, ενώ στη νέα του θέση δεν θα βρίσκεται πάνω από άλλον μικρότερο δίσκο. Για την περιγραφή των διατάξεων των δίσκων χρησιμοποιούμε το συμβολισμό [Χ,Υ,Ζ], όπου Χ ο στύλος όπου βρίσκεται ο μεγάλος δίσκος, Υ ο στύλος που βρίσκεται ο μεσαίος δίσκος και Ζ ο στύλος όπου βρίσκεται ο μικρός δίσκος, Χ,Υ,Ζ∈{Α,Β,Γ}. Ζητείται να κατασκευάσετε το γράφο που περιγράφει όλες τις δυνατές τοποθετήσεις των δίσκων στους τρεις στύλους. Κάθε κόμβος του γράφου θα αντιστοιχεί σε μια διάταξη των δίσκων στους στύλους, ενώ δύο κόμβοι θα
Α Β Γ
Α
Β
Γ Δ Ε Ζ
Η
Θ
Ι
1/14 15/18
16/17 2/13 3/12
5/10
4/11 7/8
6/9
Α
Β
Γ Δ Ε Ζ
Η
Θ
Ι
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
13
συνδέονται με ακμή εάν είναι δυνατόν να πάμε από τη μία διάταξη στην άλλη με μία μόνο μετακίνηση δίσκου. Για παράδειγμα, η αρχική κατάσταση είναι η [Α,Α,Α], ενώ αν μετακινήσουμε τον μικρό δίσκο στον στύλο Γ, έχουμε την κατάσταση [Α,Α,Γ]. Οι δύο αυτές καταστάσεις συνδέονται με ακμή, όπως φαίνεται στο παρακάτω σχήμα. Σημειώνεται ότι οι ακμές του γράφου είναι μη κατευθυνόμενες, μιας και οποιαδήποτε μετακίνηση δίσκου μπορεί να αντιστραφεί.
Για λόγους οικονομίας χώρου ζητείται να περιγράψετε το γράφο με λίστες γειτνίασης, δίνοντας για κάθε κόμβο του γράφου, τους απέναντι κόμβους των προσπιπτουσών ακμών. Για παράδειγμα, η λίστα γειτνίασης του κόμβου [Α,Α,Α] είναι η εξής: [Α,Α,Α]à[Α,Α,Β], [Α,Α,Γ] Σημείωση: Το πλήθος των κόμβων του γράφου είναι 27, μιας και κάθε δίσκος μπορεί να βρίσκεται σε 3 διαφορετικές θέσεις. Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας
ΑΠΑΝΤΗΣΗ
[Α,Α,Α] à[Α,Α,Β], [Α,Α,Γ] [Α,Α,Β] à[Α,Α,Α], [Α,Α,Γ], [Α,Γ,Β] [Α,Α,Γ] à[Α,Α,Α], [Α,Α,Β], [Α,Β,Γ] [Α,Β,Α] à[Α,Β,Β], [Α,Β,Γ], [Α,Γ,Α] [Α,Β,Β] à[ Α,Β,Α], [Α,Β,Γ], [Γ,Β,Β] [Α,Β,Γ] à[Α,Β,Α], [Α,Β,Β], [Α,Α,Γ] [Α,Γ,Α] à[Α,Β,Α], [Α,Γ,Β], [Α,Γ,Γ] [Α,Γ,Β] à[Α,Α,Β], [Α,Γ,Α], [Α,Γ,Γ] [Α,Γ,Γ] à[Α,Γ,Α], [Α,Γ,Β], [Β,Γ,Γ] [Β,Α,Α] à[Β,Α,Β], [Β,Α,Γ], [Γ,Α,Α] [Β,Α,Β] à[Β,Α,Α], [Β,Α,Γ], [Β,Γ,Β] [Β,Α,Γ] à[Β,Α,Α], [Β,Α,Β], [Β,Β,Γ] [Β,Β,Α] à[Β,Β,Β], [Β,Β,Γ], [Β,Γ,Α] [Β,Β,Β] à[Β,Β,Α], [Β,Β,Γ] [Β,Β,Γ] à[Β,Β,Α], [Β,Β,Β], [Β,Α,Γ] [Β,Γ,Α] à[Β,Γ,Β], [Β,Γ,Γ], [Β,Β,Α] [Β,Γ,Β] à[Β,Γ,Α], [Β,Γ,Γ], [Β,Α,Β] [Β,Γ,Γ] à[Β,Γ,Α], [Β,Γ,Β], [Α,Γ,Γ] [Γ,Α,Α] à[Β,Α,Α], [Γ,Α,Β], [Γ,Α,Γ] [Γ,Α,Β] à[Γ,Α,Α], [Γ,Α,Γ], [Γ,Γ,Β] [Γ,Α,Γ] à[Γ,Α,Α], [Γ,Α,Β], [Γ,Β,Γ] [Γ,Β,Α] à[Γ,Β,Β], [Γ,Β,Γ], [Γ,Γ,Α] [Γ,Β,Β] à[Α,Β,Β], [Γ,Β,Α], [Γ,Β,Γ] [Γ,Β,Γ] à[Γ,Α,Γ], [Γ,Β,Α], [Γ,Β,Β] [Γ,Γ,Α] à[Γ,Β,Α], [Γ,Γ,Β], [Γ,Γ,Γ] [Γ,Γ,Β] à[Γ,Α,Β], [Γ,Γ,Α], [Γ,Γ,Γ] [Γ,Γ,Γ] à[Γ,Γ,Α], [Γ,Γ,Β]
ΘΕΜΑ 21 ΜΟΝΑΔΕΣ 3
Δίνονται οι παρακάτω τρεις γράφοι. Σε κάθε έναν από αυτούς θέλετε να βρείτε την ελάχιστη απόσταση όλων των κόμβων από τον κόμβο Α. Για κάθε ένα από τους τρεις διαθέσιμους αλγόριθμους εύρεσης ελάχιστων αποστάσεων σε γράφους (Bellman-‐Ford, DAG-‐SHORTEST-‐PATHS και Dijkstra) διαλέξτε έναν γράφο ο οποίος να είναι κατάλληλος για να αποτελέσει είσοδο στον αλγόριθμο αυτό.
[Α,Α,Α] [Α,Α,Γ]
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
14
ΑΠΑΝΤΗΣΗ (Σημειώστε στο φύλλο απαντήσεων σε ποιο γράφο πιστεύετε ότι αντιστοιχεί κάθε αλγόριθμος) Bellman-‐Ford DAG-‐SHORTEST-‐
PATHS Dijkstra
Γράφος Β. Ο αλγόριθμος Χρησιμοποιείται σε οποιονδήποτε γράφο. Σε περίπτωση που υπάρχει αρνητικός κύκλος επιστρέφει αποτυχία.
Γράφος Α. Ο αλγόριθμος χρησιμοποιείται μόνο σε ακυκλικούς γράφους, ανεξαρτήτως αν έχουν αρνητικά βάρη ή όχι.
Γράφος Γ. Ο αλγόριθμος χρησιμοποιείται μόνο σε γράφους με θετικά βάρη, ανεξαρτήτως εάν έχουν κύκλο ή όχι.
ΘΕΜΑ 22 ΜΟΝΑΔΕΣ 4
Έστω τα σύνολα θετικών ακεραίων αριθμών Α και Β, τέτοια ώστε Α={2,3,4,5} και Β={1,2,3,4}. Μπορείτε να αναδιατάξετε τα σύνολα αυτά με όποιον τρόπο θέλετε. Έστω ai το i-‐οστό στοιχείο του συνόλου Α μετά την αναδιάταξη και bi το i-‐οστό στοιχείο του συνόλου Β μετά την αναδιάταξη. Στόχος σας είναι να μεγιστοποιήσετε το
γινόμενο ∏ =
4
1ibiia . Ποια είναι η μέγιστη τιμή του γινομένου αυτού που μπορείτε να πετύχετε;
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α 34.560 Β 96.000 Γ 720.000 Δ 3.750.000 Ε 18.750.000
Γ
ΘΕΜΑ 23 ΜΟΝΑΔΕΣ 6
Έστω ο παρακάτω γράφος με τα αντίστοιχα βάρη στις ακμές του. Επίσης, οι π-‐τιμές και οι d-‐τιμές που έχουν υπολογιστεί στα πλαίσια του αλγόριθμου του Dijkstra. Θα μπορούσαν αυτές οι τιμές να αποτελούν αποτέλεσμα ορθής εκτέλεσης του αλγορίθμου του Dijkstra στον παρακάτω γράφο; Εάν όχι, για ποιό λόγο; (μονάδες 4) Εάν ναι, είναι αυτές οι τιμές οι μοναδικές ορθές τιμές που θα μπορούσαν να προκύψουν; (μονάδες 2)
1 Α Β
Γ Δ
3 -‐2 1
3
1 Α Β
Γ Δ
3 -‐2 1
3
1 Α Β
Γ Δ
3 2 1
3
Α Β
Γ
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
15
s
a
e
c
b
f
d
5
7
8
4
3
3
37
2
d=0π=NIL
d=5π=s
d=8π=a
d=7π=s
d=10π=c
d=8π=s
d=11π=c
ΑΠΑΝΤΗΣΗ Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας Οι π-‐τιμές και οι d-‐τιμές που φαίνονται παραπάνω αποτελούν αποτέλεσμα ορθής εκτέλεσης του αλγορίθμου του Dijkstra στον παραπάνω γράφο. Υπάρχει ένα ακόμα πιθανό αποτέλεσμα: ο κόμβος d μπορεί να έχει π-‐τιμή ίση με b. Αυτό γίνεται διότι οι κόμβοι b και c έχουν την ίδια d-‐τιμή, και επομένως ήταν και οι δύο ταυτόχρονα στην ουρά προτεραιότητας με την ίδια προτεραιότητα, όταν ο κόμβος c επιστράφηκε από την EXTRACTMIN κλήση. Έτσι, θα μπορούσε να είχε επιστραφεί ο κόμβος c αντί του κόμβου b.
ΘΕΜΑ 24 ΜΟΝΑΔΕΣ 4 Ποιο από τα παρακάτω όρια είναι αληθές για τη συνάρτηση 2n;
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ E
Ο(3n) Θ(3n) Ω(3n) Κανένα Όλα
ΘΕΜΑ 25 ΜΟΝΑΔΕΣ 3 Δώστε τα ασυμπτωτικά άνω και κάτω όρια για την παρακάτω αναδρομική συνάρτηση: T(n) = 16T(n/4) + n2
ΑΠΑΝΤΗΣΗ Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας T(n) = 16T(n/4) + n2 = Θ(n2 lg n). Είναι μια ακόμη περίπτωση αλγορίθμου «διαίρει και βασίλευε»με a = 16, b = 4, f (n) = n2, and nlogb
a = nlog416 = n2. Αφού
n2 = Θ(nlog416), από τη δεύτερη περίπτωση του Θεωρήματος Κυριαρχίας προκύπτει ότι T(n) = Θ(n2 lg n).
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
16
ΘΕΜΑ 26 ΜΟΝΑΔΕΣ 3 Έστω η κάτωθι συνάρτηση mx #include <stdio.h> struct node { int n; struct node* next; }; int mx (struct node *n, int v){ if (n == NULL) return(v); if ( n->n >= v) return( mx(n->next, n->n) ); else return( mx(n->next, v) ); } int doMx (struct node *n){ if (n) return mx(n->next, n->n) ; return -1; }
Ποιες από τις παρακάτω περιπτώσεις ελέγχου πρέπει να ληφθούν υπ΄όψιν όταν πρόκειται να ελεγχθεί η συνάρτηση doMx με τη προσέγγιση των συνοριακών τιμών. (Σημ: οι αγκύλες {} σηματοδοτούν συνδεδεμένη λίστα )
ΑΠΑΝΤΗΣΗ (επιλέξτε όσες από τις παρακάτω επιλογές είναι σωστές και σημειώστε τις στο φύλλο απαντήσεων) Α Β Γ Δ Ε
({1}) ({8, 5, 13, 44, 2}) ({23, 5, 7, 7, 7, 90}) ({1,2,2,2,2,2,1}) ({3,6,5,6,2})
ΘΕΜΑ 27 ΜΟΝΑΔΕΣ 3 Έστω η συνάρτηση
int isGreekLicensePlate( char *a, int n);
η οποία ελέγχει αν η πινακίδα ενός αυτοκινήτου είναι ελληνική. Οι ελληνικές πινακίδες αποτελούνται από ακριβώς 3 λατινικούς χαρακτήρες και έναν τετραψήφιο αριθμό. Πόσες κλάσεις ισοδύναμων τιμών απαιτούνται για τον πλήρη έλεγχο της παραπάνω συνάρτησης σύμφωνα με τη στρατηγική του μαύρου κουτιού;
ΑΠΑΝΤΗΣΗ (επιλέξτε μία από τις παρακάτω επιλογές και σημειώστε τη στο φύλλο απαντήσεων) Α Β Γ Δ Ε
3 4 5 6 7
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
17
ΘΕΜΑ 28 ΜΟΝΑΔΕΣ 6 Έστω η συνάρτηση
int triangleType(int a,int b, int c)
η οποία αποφαίνεται αν ένα τρίγωνο με μήκη πλευρών a, b και c είναι σκαληνό, ισοσκελές ή ισόπλευρο επιστρέφοντας 1, 2, 3 αντίστοιχα. Σε περίπτωση που η είσοδος δεν μπορεί να σχηματίσει τρίγωνο η συνάρτηση επιστρέφει -‐1 . Αναφέρετε τουλάχιστον 5 κλάσεις ισοδύναμων τιμών που απαιτούνται για τον έλεγχο της συνάρτησης triangleType σύμφωνα με τη στρατηγική του μαύρου κουτιού. Υπενθυμίζεται ότι σύμφωνα με την τριγωνική ανισότητα το άθροισμα των μηκών δύο οποιωνδήποτε πλευρών ενός τριγώνου στο επίπεδο, είναι μεγαλύτερο από το μήκος της τρίτης πλευράς
ΑΠΑΝΤΗΣΗ Χρησιμοποιήστε το χώρο στο φύλο απαντήσεων για να δώσετε την απάντησή σας
Υπάρχουν 3 έγκυρες κλάσεις ισοδύναμων τιμών και 5 άκυρες κλάσεις. Στα κριτήρια συγκαταλέγονται και οι συνθήκες που πρέπει να ισχύουν για το άθροισμα των πλευρών ενός τριγώνου. Έγκυρες κλάσεις:
1. Σκαληνό τρίγωνο, με κριτήριο a + b > c και a < b < c 2. Ισοσκελές τρίγωνο, με κριτήριο a + b > c (αν a = b) 3. Ισόπλευρο τρίγωνο, με κριτήριο a = b = c (a > 0)
Άκυρες κλάσεις 1. Σκαληνό τρίγωνο με a + b <= c και a < b < c 2. Ισοσκελές τρίγωνο, με a + b < c και a = b 3. Μήκος πλευράς ίσο με 0 4. Μήκος πλευράς αρνητικό 5. Είσοδος χαρακτήρα (π.χ. ‘a’) αντί ακεραίου (επειδή πρόκειται για τη C).
ΘΕΜΑ 29 ΜΟΝΑΔΕΣ 3 Έστω οι ορισμοί typedef struct node* link; struct node { int key; link next; }; link list, x; int c;
Θεωρούμε ότι ο δείκτης list δείχνει στον πρώτο κόμβο μιας λίστας με θετικά κλειδιά, της οποίας ο τελευταίος κόμβος έχει στο πεδίο next τιμή NULL. Ποια από τα παρακάτω τμήματα κώδικα κάνουν αυτό που λέει η περιγραφή που βρίσκεται αριστερά τους;
ΑΠΑΝΤΗΣΗ (επιλέξτε όσες από τις παρακάτω επιλογές είναι σωστές και σημειώστε τις στο φύλλο απαντήσεων) Α Υπολογισμός
πλήθους στοιχείων λίστας
x = list; c = 0; for (c = 0; x != NULL; x = x->next) c++;
Β Διαγραφή 2ου κόμβου
link x = malloc(sizeof *t); x->key = 17; x->next = list->next->next; list->next->next = x;
Γ Εισαγωγή νέου κόμβου μετά τον 2ο
x = list->next; list->next = list->next->next;
ΠΛΣ50: ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ -‐ Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ -‐ 8 ΙΟΥΝΙΟΥ 2008
18
free(x);
Δ Υπολογισμός μέγιστου στοιχείου λίστας
x = list; c = -1; for (c = -1; x != NULL; x = x->next) if (x->key > c) c = x->key;
ΘΕΜΑ 30 ΜΟΝΑΔΕΣ 4 Έστω οι ορισμοί typedef struct node* link; struct node { int key; link l, r; }; link tree;
Ποια από τα παρακάτω τμήματα κώδικα υπολογίζουν και επιστρέφουν αυτό που λέει η περιγραφή που βρίσκεται αριστερά τους;
ΑΠΑΝΤΗΣΗ (επιλέξτε όσες από τις παρακάτω επιλογές είναι σωστές και σημειώστε τις στο φύλλο απαντήσεων) Α Το ύψος του
δέντρου int mystery (link x) { if (x == NULL) return 0; else return x->key + mystery (x->l) + mystery (x->r); }
Β Πάντα την ίδια τιμή.
int mystery (link x) { if (x == NULL) return 0; else return (mystery (x->l)> mystery (x->r)? mystery (x->l): mystery (x->r)); }
Γ Το άθροισμα των κλειδιών του δένδρου.
int mystery (link x) { if (x == NULL) return 0; else return 1 + (mystery (x->l)> mystery (x->r)? mystery (x->l): mystery (x->r)); }
Δ Τη μεγαλύτερη τιμή του δένδρου.
int mystery (link x) { if (x == NULL) return 0; else return ((mystery (x->l)> mystery (x->r)? mystery (x->l): mystery (x->r)) < x->key? x->key: (mystery (x->l)> mystery (x->r)? mystery (x->l): mystery (x->r)));
}