ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Σχετικά έγγραφα
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ (ΟΜΑΔΑ ΘΕΜΑΤΩΝ A)

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Αριθμητικά Συστήματα

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Υπολογισμός - Εντολές Επανάληψης

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

Εισαγωγή στην Επιστήμη των Υπολογιστών

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ. 1) Έστω η λογική συνάρτηση F = A' + Β'. D + B. C' + C. D' (όπου οι τόνοι δηλώνουν συμπληρώματα).

Εισαγωγή στον Προγραμματισμό

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

Συστήματα Αρίθμησης. Συστήματα Αρίθμησης 1. PDF created with FinePrint pdffactory Pro trial version

Πληροφορική 2. Αλγόριθμοι

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

Λογική Σχεδίαση Ψηφιακών Συστημάτων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Εισαγωγή στον Προγραμματισμό

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

1. ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΩΝ. α i. (α i β i ) (1.3) όπου: η= το πλήθος ακεραίων ψηφίων του αριθμού Ν. n-1

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Γλώσσα Προγραμματισμού C

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Δομημένος Προγραμματισμός

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Δυαδικό Σύστημα Αρίθμησης

Αθροιστές. Ημιαθροιστής

4. Επιλογή και Επανάληψη

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Η γλώσσα προγραμματισμού C

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

Ελίνα Μακρή

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Πράξεις με δυαδικούς αριθμούς

Εισαγωγή στον Προγραμματισμό

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Συναρτήσεις. Εισαγωγή

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Σημειώσεις για πρόοδο στο εργαστήριο

ΚΕΦΑΛΑΙΑ & 8.2 (ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ) ΘΕΩΡΙΑ

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στον Προγραμματισμό

Εκτέλεση της εντολής1 και στη συνέχεια εκτέλεση της ΕΝΟΤΗΤΑΣ και της εντολής2 όσο η ΣΥΝΘΗΚΗ είναι αληθής.

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Κεφάλαιο 8: Προγραμματίζοντας αλγορίθμους έξυπνα και δημιουργικά

Εργαστηριακή Άσκηση 1

Μεθόδων Επίλυσης Προβλημάτων

Β7.1.4 Δομές Επανάληψης. Β Λυκείου Κατεύθυνσης

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στον Προγραμματισμό

3. Να γραφεί πρόγραμμα που θα διαβάζει 100 ακεραίους αριθμούς από το πληκτρολόγιο και θα υπολογίζει το άθροισμά τους.

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Εισαγωγή στην επιστήμη των υπολογιστών

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Μεθόδων Επίλυσης Προβλημάτων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εχουμε ήδη συναντήσει μονοδιάστατους πίνακες, οι οποίοι ορίζονται ως εξής:

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Συστήματα Αρίθμησης ΔΥΑΔΙΚΟ ΣΥΣΤΗΜΑ ΑΡΙΘΜΗΣΗΣ

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Η γλώσσα προγραμματισμού C

Ουρά Προτεραιότητας (priority queue)

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΠΛΗ-21

Εισαγωγή στην επιστήμη των υπολογιστών. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ και Μετατροπές Αριθμών

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

Transcript:

ΟΔΗΓΙΕΣ: ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 14 ΙΟΥΝΙΟΥ 2015 Τα θέματα που έχετε στα χέρια σας είναι σε τρεις (3) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα ή δεν είναι καλά φωτοτυπημένη ενημερώστε άμεσα τον επιτηρητή. Η άριστη απάντηση σε κάθε θέμα βαθμολογείται με δύο (2) μονάδες. Τα ερωτήματα κάθε θέματος (α, β, κλπ.) δεν είναι απαραίτητα ισοδύναμα μεταξύ τους. Απαντήστε και στα πέντε (5) θέματα που ακολουθούν. Γράψτε στο γραπτό σας ΚΑΘΑΡΑ ΚΑΙ ΜΕ ΕΥΚΡΙΝΕΙΑ το θέμα και το ερώτημα στο οποίο απαντάτε κάθε φορά. Προσπαθήστε να απαντάτε όλα τα ερωτήματα κάθε θέματος μαζί. Η αναγραφή σχολίων όπου απαιτείται (προγράμματα σε C, ψευδοκώδικας) είναι υποχρεωτική. Ο συνολικός χρόνος εξέτασης είναι τρεις (3) ώρες ακριβώς. Θέμα 1 (2,0 μονάδες) α) Κατασκευάστε τον πίνακα αλήθειας για την παρακάτω λογική συνάρτηση: F = A'. B'. C + A'. B. C' + A. B'. C' + A. B. C β) Εξετάστε αν το παρακάτω λογικό κύκλωμα είναι ισοδύναμο (δηλαδή, δίνει το ίδιο αποτέλεσμα) με το αντίστοιχο κύκλωμα του ερωτήματος (α). γ) Να σχεδιαστεί Διάγραμμα Ροής Προγράμματος (flowchart) που διαβάζει ένα μονοδιάστατο πίνακα ακεραίων, μεγέθους N, και αντιστρέφει τη σειρά των στοιχείων του. Δηλαδή, το 1ο στοιχείο του πρέπει να τοποθετηθεί στη θέση N, το 2ο να τοποθετηθεί στη θέση N-1, κ.ο.κ. ΘΕΜΑΤΑ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 σελ. 1 από 3

Θέμα 2 (2,0 μονάδες) α) Έστω το παρακάτω δένδρο - σωρός μεγίστων: i) Να δώσετε την ενδο-διατεταγμένη διαπέραση του δένδρου - σωρού. ii) Να διαγραφεί η τιμή στη ρίζα του δένδρου - σωρού και να παρουσιαστεί το δένδρο - σωρός που προκύπτει μετά από τη διαγραφή. β) Οι αριθμοί Fibonacci είναι μια ακολουθία ακεραίων αριθμών F, στην οποία οι δύο πρώτοι αριθμοί έχουν την τιμή 0 και 1 και κάθε άλλος αριθμός προκύπτει από το άθροισμα των δύο προηγουμένων του, δηλαδή: F(n) = F(n - 1) + F(n - 2), για n 2, όπου F(0) = 0 και F(1) = 1. Έτσι, τα πρώτα στοιχεία της ακολουθίας είναι: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,... Γράψτε αλγόριθμο σε ψευδοκώδικα που τυπώνει με αύξουσα σειρά όλους τους τετραψήφιους αριθμούς Fibonacci (δηλαδή, αυτούς που ανήκουν στο διάστημα από 1000 έως 9999). Θέμα 3 (2,0 μονάδες) α) Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, στο οποίο αρχικά θα διαβάζονται τα στοιχεία ενός μονοδιάστατου πίνακα ακεραίων, Ν = 100 θέσεων, και στη συνέχεια θα υπολογίζεται και θα εκτυπώνεται το άθροισμα των στοιχείων του πίνακα μέχρι το πρώτο μηδενικό στοιχείο, αν υπάρχει μηδέν στον πίνακα, ή όλων των στοιχείων του πίνακα, αν δεν υπάρχει μηδενικό στοιχείο σε αυτόν. β) Υλοποιήστε συνάρτηση στη γλώσσα προγραμματισμού C που παίρνει ως όρισμα έναν πίνακα ακεραίων, tree, και το μέγεθός του, size, και εξετάζει αν ο πίνακας αποτελεί τη συνεχόμενη αναπαράσταση δένδρου - σωρού μεγίστων (στη ρίζα είναι η μεγαλύτερη τιμή του δένδρου), οπότε επιστρέφει 1, ή όχι, οπότε επιστρέφει 0. Θεωρήστε ως δεδομένο ότι οι τιμές των κόμβων είναι θετικοί αριθμοί και ότι η τιμή -1 σε κάποια θέση του πίνακα δηλώνει απουσία κόμβου. ΘΕΜΑΤΑ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 σελ. 2 από 3

Θέμα 4 (2,0 μονάδες) α) Μετατρέψτε τον οκταδικό αριθμό (76.6) <8> στο δυαδικό σύστημα αρίθμησης και, στη συνέχεια, από το δυαδικό σύστημα στο δεκαεξαδικό σύστημα, δείχνοντας όλα τα βήματα της μετατροπής. β) Να εκτελέσετε την αφαίρεση των αριθμών (3F3) <16> - (7C) <16> στο δεκαεξαδικό σύστημα αρίθμησης. Επαληθεύστε το αποτέλεσμα μέσω του δυαδικού συστήματος με τη μέθοδο συμπληρώματος ως προς 2, θεωρώντας ότι οι δυαδικοί αριθμοί αναπαριστώνται με 12 bits. γ) Να γραφεί συνάρτηση στη γλώσσα προγραμματισμού C που παίρνει ως ορίσματα δύο μονοδιάστατους πίνακες ακεραίων αριθμών pin1 και pin2, μεγέθους N ο καθένας, και επιστρέφει το πλήθος των στοιχείων του πρώτου πίνακα που περιέχονται και στον δεύτερο πίνακα. Θεωρήστε ότι σε κάθε πίνακα τα στοιχεία είναι μοναδικά, δηλαδή έχουν διαφορετικές τιμές μεταξύ τους. Θέμα 5 (2,0 μονάδες) α) Να γραφεί στη γλώσσα προγραμματισμού C πρόγραμμα που διαβάζει ένα θετικό ακέραιο αριθμό n (με αμυντικό προγραμματισμό) και εμφανίζει την τιμή της παρακάτω παράστασης: 1 1 1 1 S(n) 1 3 2 3 3 3 n 3 β) Έστω ότι οι κόμβοι μιας λίστας έχουν την ακόλουθη δομή: struct list_node int t; struct list_node *next; ; Να γραφεί συνάρτηση στη γλώσσα προγραμματισμού C που παίρνει ως ορίσματα μια ακέραια τιμή num και έναν δείκτη στην αρχή της λίστας και επιστρέφει το πλήθος των εμφανίσεων της τιμής num στη λίστα. ΚΑΛΗ ΕΠΙΤΥΧΙΑ! ΘΕΜΑΤΑ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 σελ. 3 από 3

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - ΙΟΥΝΙΟΣ 2015 ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ Θέμα 1 α) Πίνακας αληθείας της συνάρτησης F: A B C F 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 β) Πίνακας αληθείας του λογικού κυκλώματος: A B C N (B XOR C) F (N XOR A) 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 Άρα το λογικό κύκλωμα είναι ισοδύναμο με το κύκλωμα του ερωτήματος (α), επειδή για τις ίδιες εισόδους δίνουν το ίδιο αποτέλεσμα στην έξοδο. ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 1

γ) Διάγραμμα Ροής Προγράμματος: ΑΡΧΗ I:= 1 I <= N? ΟΧΙ I:= 1 I <= N div 2? ΟΧΙ ΤΕΛΟΣ ΝΑΙ ΝΑΙ ΔΙΑΒΑΣΕ(A[I]) TEMP:= A[I] A[I]:= A[N-I+1] A[N-I+1]:= TEMP I:= I+1 I:= I+1 ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 2

Θέμα 2 α.i) Ενδο-διατεταγμένη διαπέραση του δένδρου - σωρού: 23-41 - 27-68 - 54-56 - 99-9 - 71-44 α.ii) Διαγραφή ρίζας από δένδρο - σωρό β) ΑΛΓΟΡΙΘΜΟΣ FIBONACCI ΔΕΔΟΜΕΝΑ a, b, next: INTEGER; /* Το a αντιστοιχεί στο F(n-2) και το b αντιστοιχεί στο F(n-1) */ ΑΡΧΗ a:=0; /* Αρχικοποίηση των μεταβλητών */ b:=1; ΕΠΑΝΑΛΑΒΕ ΕΑΝ (b>999) ΤΟΤΕ /* Αν ο b έχει πάνω από 3 ψηφία... */ ΤΥΠΩΣΕ(b," ") /*... τον τυπώνουμε. */ ΕΑΝ-ΤΕΛΟΣ; next:=a+b; /* Υπολογίζουμε τον επόμενο. */ a:=b; /* Τα a και b ενημερώνονται... */ b:=next /*... με τις νέες τιμές. */ ΜΕΧΡΙ (next>9999) /* Αν ο επόμενος είναι 5ψήφιος σταματάμε */ ΤΕΛΟΣ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 3

Θέμα 3 α) #include <stdio.h> #define N 100 main() int x[n], i, sum=0; for (i=0; i<n; i++) printf("dose %do stoixeio\n", i+1); scanf("%d", &x[i]); i=0; while (x[i]!=0 && i<n)) sum+=x[i]; ++i; printf("athroisma = %d\n", sum); β) int check(int tree[], int size) int i; for (i=0; i<size; ++i) if (tree[i] == -1) break; /* Εύρεση της πρώτης κενής θέσης */ else if (tree[i] > tree[(i-1)/2]) return(0); /* Δεν ισχύει η ιδιότητα του δένδρου - σωρού */ for (; ++i<size; ) /* Έλεγξε τους υπόλοιπους κόμβους */ if (tree[i]!= -1) /* Μη πλήρες δένδρο */ return(0); return(1); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 4

Θέμα 4 ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ α) Μετατροπή οκταδικού (76.6 <8> ) σε δυαδικό (κάθε ψηφίο αντιστοιχεί σε 3 δυαδικά ψηφία): 76.6 <8> = 111 110. 110 <2> Μετατροπή δυαδικού (0011 1110. 1100 <2> ) σε δεκαεξαδικό Χωρίζω σε τετράδες τα δυαδικά ψηφία αριστερά και δεξιά της υποδιαστολής και προσθέτω 0 στην αρχή ή στο τέλος, αν απαιτείται. Κάθε τετράδα αντιστοιχεί σε ένα δεκαεξαδικό ψηφίο. 0011 1110. 1100 <2> = 3E.C <16> β) Η εκτέλεση της αφαίρεσης γίνεται ως ακολούθως: από μεταφορά: 1 3F3 <16> - 7C <16> 377 <16> Για να την επαληθεύσουμε μέσω του δυαδικού έχουμε: (3F3) <16> = 0011 1111 0011 <2> (7C) <16> = 0000 0111 1100 <2> Συμπλήρωμα ως προς 2 του αφαιρετέου: 0000 0111 1100 <2> Συμπλήρωμα ως προς 1: 1111 1000 0011 <2> Συμπλήρωμα ως προς 2: 1111 1000 0100 <2> Αρκεί να προσθέσουμε τον μειωτέο 0011 1111 0011 <2> στο συμπλήρωμα ως προς 2 του αφαιρετέου. Τελικό αποτέλεσμα: σε μεταφορά: 1 1111 0011 1111 0011 <2> + 1111 1000 0100 <2> 1 0011 0111 0111 <2> Το αποτέλεσμα της αφαίρεσης είναι 0011 0111 0111 <2>. Προφανώς: 377 <16> = 0011 0111 0111 <2> (Για την επαλήθευση κάθε ψηφίο του δεκαεξαδικού αριθμού αντιστοιχεί σε 4 δυαδικά ψηφία). ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 5

γ) int count_common(int pin1[], int pin2[], int N) int i, j, count = 0; for (i = 0; i < N; i++) for (j = 0; j < N; j++) if (pin2[j] == pin1[i]) count++; return (count); Θέμα 5 α) #include <stdio.h> main() int n, i; float sum=0.0; do printf("insert a positive integer number: "); scanf("%d", &n); while (n<=0); for (i=1; i<=n; i++) sum = sum + 1.0/(i*i*i); printf("s(%d) = %f", n, sum); β) int count_num(int num, struct list_node *node) int plithos = 0; /* πλήθος εμφανίσεων του στοιχείου - αρχικά 0 */ while (node!= NULL) /* όσο η λίστα δεν έχει τελειώσει... */ if (node -> t == num) /* έλεγχος στοιχείου */ ++ plithos; /* αύξηση πλήθους κατά 1 */ node = node -> next; /* μετακίνηση στον επόμενο κόμβο */ return plithos; ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2015 6

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 8 ΙΟΥΛΙΟΥ 2015 ΟΔΗΓΙΕΣ: Τα θέματα που έχετε στα χέρια σας είναι τρεις (3) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα ή δεν είναι καλά φωτοτυπημένη ενημερώστε άμεσα τον επιτηρητή. Η άριστη απάντηση σε κάθε θέμα βαθμολογείται με δύο (2) μονάδες. Τα ερωτήματα κάθε θέματος (α, β, κλπ.) δεν είναι απαραίτητα ισοδύναμα μεταξύ τους. Απαντήστε και στα πέντε (5) θέματα που ακολουθούν. Γράψτε στο γραπτό σας ΚΑΘΑΡΑ ΚΑΙ ΜΕ ΕΥΚΡΙΝΕΙΑ το θέμα και το ερώτημα στο οποίο απαντάτε κάθε φορά. Προσπαθήστε να απαντάτε όλα τα ερωτήματα κάθε θέματος μαζί. Η αναγραφή σχολίων όπου απαιτείται (προγράμματα σε C, ψευδοκώδικας) είναι υποχρεωτική. Ο συνολικός χρόνος εξέτασης είναι τρεις (3) ώρες ακριβώς. Θέμα 1 (2,0 μονάδες) α) Έστω η λογική συνάρτηση F = A' + Β'. D + B. C' + C. D' (όπου οι τόνοι δηλώνουν συμπληρώματα). i) Σχεδιάστε το αντίστοιχο κύκλωμα. ii) Κατασκευάστε τον πίνακα αλήθειας της συνάρτησης F. β) Έστω ότι οι κόμβοι μιας λίστας έχουν την ακόλουθη δομή: struct node float s; struct node *next; ; Γράψτε συνάρτηση στη γλώσσα προγραμματισμού C που παίρνει ως όρισμα δύο θετικές πραγματικές τιμές low και high (δεν απαιτείται αμυντικός προγραμματισμός), όπου low < high, και έναν δείκτη στην αρχή της λίστας και επιστρέφει το μέσο όρο των στοιχείων της λίστας που έχουν τιμές μεταξύ low και high (μη συμπεριλαμβανομένων των τιμών low και high). Σε περίπτωση που δεν υπάρχουν στη λίστα στοιχεία με τιμή μεταξύ low και high, η συνάρτηση θα επιστρέφει την τιμή -1. ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 σελ. 1 από 3

Θέμα 2 (2,0 μονάδες) α) i) Κατασκευάστε το Δυαδικό Δένδρο Αναζήτησης που περιέχει τους αριθμούς 48, 9, 60, 56, 50, 22 και έχει την παρακάτω μορφή. Σημειώστε ότι το δένδρο δεν σχηματίζεται από τους κόμβους τοποθετώντας τις τιμές με τη σειρά που δίνονται. ii) Ποια είναι η σειρά επίσκεψης των κόμβων του δένδρου που σχηματίστηκε αν χρησιμοποιήσουμε τη μετα-διατεταγμένη διαπέραση; iii) Να απεικονιστεί η συνεχόμενη αναπαράσταση του δένδρου. β) Γράψτε στη γλώσσα προγραμματισμού C τη συνάρτηση cumulative_sum(int mat[], int size) που παίρνει ως ορίσματα το μονοδιάστατο πίνακα ακεραίων, mat, και το μέγεθός του, size, και αντικαθιστά κάθε στοιχείο του πίνακα με το άθροισμα όλων των στοιχείων του αρχικού πίνακα από την πρώτη θέση του πίνακα μέχρι και τη θέση του στοιχείου. Θέμα 3 (2,0 μονάδες) α) Γράψτε συνάρτηση στη γλώσσα προγραμματισμού C που παίρνει ως όρισμα έναν μονοδιάστατο πίνακα 100 χαρακτήρων με όνομα text, στον οποίο έχει καταχωρηθεί κάποιο κείμενο, και επιστρέφει το μήκος της μεγαλύτερης λέξης του κειμένου. Θεωρήστε ότι στον πίνακα υπάρχουν μόνο γράμματα και κενά και το κείμενο τελειώνει με το χαρακτήρα '\0'. β) Γράψτε πρόγραμμα στη γλώσσα προγραμματισμού C που διαβάζει έναν θετικό ακέραιο αριθμό num (με αμυντικό προγραμματισμό) και στη συνέχεια καλεί μια συνάρτηση με παράμετρο το num, η οποία τυπώνει όλους τους ακέραιους διαιρέτες του num (συμπεριλαμβανομένων του 1 και του ίδιου του αριθμού) και επιστρέφει το πλήθος τους. Για παράδειγμα, για num = 12, η συνάρτηση θα τυπώνει τους αριθμούς 1, 2, 3, 4, 6, 12 και θα επιστρέφει την τιμή 6. ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 σελ. 2 από 3

Θέμα 4 ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ (2,0 μονάδες) α) Δώστε το Διάγραμμα Ροής Προγράμματος που διαβάζει έναν άρτιο θετικό ακέραιο αριθμό Ν με χρήση αμυντικού προγραμματισμού και υπολογίζει και εκτυπώνει το κάτωθι άθροισμα S: S 1 2! 1 4! 1... 6! 1 N! β) Τι θα τυπώσει το παρακάτω τμήμα προγράμματος; for (i=0; i<3; i++) for (j=i; j<5; j++) printf("*"); printf("!\n"); γ) Γράψτε στη γλώσσα προγραμματισμού C ένα βρόχο επανάληψης ισοδύναμο με τον παρακάτω βρόχο for, χρησιμοποιώντας την εντολή do - while. for (y=100; y>1; y=2) printf("y= %d", y); Θέμα 5 (2,0 μονάδες) α) Να εκτελέσετε την αφαίρεση (34) <10> - (74) <10> στο δυαδικό σύστημα αρίθμησης, χρησιμοποιώντας τη μέθοδο του συμπληρώματος ως προς 2. Θεωρήστε ότι οι δυαδικοί αριθμοί αναπαριστώνται με 8 δυαδικά ψηφία (bits). β) Να εκτελέσετε την πρόσθεση των αριθμών (3F3) <16> + (7C) <16> στο δεκαεξαδικό σύστημα αρίθμησης. Επαληθεύστε το αποτέλεσμα μέσω του δεκαδικού συστήματος. γ) Θεωρήστε δυαδικό δένδρο που αναπαρίσταται σε μορφή μονοδιάστατου πίνακα (συνεχόμενη αναπαράσταση). Γράψτε συνάρτηση στη γλώσσα προγραμματισμού C που παίρνει ως όρισμα τη θέση ενός κόμβου στον πίνακα και επιστρέφει το βάθος του κόμβου, δηλαδή, το πλήθος των ακμών στη διαδρομή από τη ρίζα του δένδρου μέχρι το συγκεκριμένο κόμβο. Αν στην είσοδο δοθεί αρνητικός αριθμός τότε η συνάρτηση να επιστρέφει -1. ΚΑΛΗ ΕΠΙΤΥΧΙΑ! ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 σελ. 3 από 3

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - ΙΟΥΛΙΟΣ 2015 ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ Θέμα 1 α) i. Κύκλωμα: ii. Πίνακας αληθείας της F: A B C D A' B' C' D' B' and D B and C' C and D' F 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 1 ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 1

A B C D A' B' C' D' B' and D B and C' C and D' F 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 β) float between(float low, float high, struct node *start) float sum = 0.0; /* άθροισμα στοιχείων στο διάστημα (low, high) */ int count = 0; /* πλήθος στοιχείων στο διάστημα (low, high) */ while (start!= NULL) /* όσο δεν φτάσαμε στο τέλος της λίστας... */ if ((start->s > low) && (start->s < high)) /* έλεγχος αν το στοιχείο ανήκει στο διάστημα (low, high) */ sum += start->s; /* αύξηση του αθροίσματος... */ ++count; /*... και του πλήθους */ start = start->next; /* μετάβαση στο επόμενο στοιχείο */ if (count>0) /* έλεγχος αν υπήρξαν στοιχεία στο διάστημα (low, high)*/ return(sum/count); /* επιστροφή του μέσου όρου τους */ else return(-1); /* επιστροφή -1 αν δεν υπήρξαν τέτοια στοιχεία */ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 2

Θέμα 2 α) i) Γνωρίζοντας ότι η ενδο-διατεταγμένη διαπέραση ενός Δυαδικού Δέντρου Αναζήτησης μας δίνει τις τιμές των κόμβων του δέντρου σε αύξουσα διάταξη, τοποθετούμε τους αριθμούς σε αύξουσα διάταξη (9, 22, 48, 50, 56, 60) και στη συνέχεια διατρέχουμε τους κόμβους του δέντρου με την ενδο-διατεταγμένη διαπέραση, τοποθετώντας διαδοχικά τις προαναφερθείσες τιμές με αύξουσα διάταξη. Έτσι, καταλήγουμε στο εξής αποτέλεσμα: 22 9 56 48 60 50 ii) Η σειρά επίσκεψης των κόμβων του δένδρου με μετα-διατεταγμένη διαπέραση είναι: 9-50 - 48-60 - 56-22. iii) Συνεχόμενη αναπαράσταση του δέντρου: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 22 9 56 48 60 50 β) void cumulative_sum(int mat[], int size) int i; /* Μετρητής για διαπέραση του πίνακα */ for (i=1; i<size; ++i) /* η νέα τιμή του στοιχείου mat[i] ισούται με το άθροισμα των αρχικών τιμών των στοιχείων mat[0], mat[1],, mat[i] του πίνακα mat. Το άθροισμα αυτό ισούται με το άθροισμα της νέας τιμής του στοιχείου mat[i-1] συν την αρχική τιμή του στοιχείου mat[i] */ mat[i] += mat[i-1]; ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 3

Θέμα 3 α) int MaxLenWord(char text[100]) /* text: πίνακας 100 χαρακτήρων */ int i=0, k, max=0; /* i: μετρητής για διαπέραση του κειμένου, k: μετρητής γραμμάτων, max: μέγιστο μήκος λέξης, αρχικά 0 */ while (text[i]!='\0') /* όσο υπάρχουν ακόμα γράμματα στο text */ k = 0; /* αρχή λέξης - μηδενισμός μετρητή γραμμάτων */ while ((text[i]!=' ')&&(text[i]!='\0')) /* όσο δεν έχουμε φτάσει σε κενό ή στο τέλος του κειμένου */ k++; /* αύξηση του μετρητή γραμμάτων */ i++; /* μετάβαση στο επόμενο γράμμα του κειμένου */ if (k > max) /* έχουμε φτάσει σε τέλος λέξης και ελέγχουμε αν το μήκος αυτής της λέξης είναι μεγαλύτερο από το μεγαλύτερο μήκος των προηγούμενων λέξεων */ max = k; /* ενημερώνουμε το max */ if (text[i]!='\0') /* αν δεν φτάσαμε στο τέλος του κειμένου */ i++; /* αυξάνουμε το i για να βρούμε την επόμενη λέξη */ return(max); /* επιστροφή του μέγιστου μήκους λέξης */ Εναλλακτική λύση: int MaxLenWord(char text[100]) /* text: πίνακας 100 χαρακτήρων */ int i, k=0, max=0; /* i: μετρητής για διαπέραση του κειμένου, k: μετρητής γραμμάτων τρέχουσας λέξης, αρχικά 0, max: μέγιστο μήκος λέξης, αρχικά 0 */ for (i=0; i < 100 && text[i]!='\0'; ++i) /* επανάληψη μέχρι το τέλος του πίνακα ή του κειμένου */ if (text[i] == ' ') /* αν φτάσαμε στο τέλος λέξης */ if (k > max) /* αν το μήκος αυτής της λέξης είναι μεγαλύτερο από το μεγαλύτερο μήκος των προηγούμενων λέξεων */ max = k; /* ενημερώνουμε το max */ k = 0; /* αρχικοποίηση μετρητή για την επόμενη λέξη */ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 4

else /* αλλιώς (είμαστε, δηλαδή, μέσα στη λέξη) */ ++k; /* αυξάνουμε το μετρητή γραμμάτων */ if (k > max) /* έλεγχος μήκους τελευταίας λέξης (βρέθηκε '\0') */ max = k; /* ενημερώνουμε το max */ return(max); /* επιστροφή του μέγιστου μήκους λέξης */ β) #include <stdio.h> int divisors(int n) int i, count=0; /* i: μετρητής ακεραίων μέχρι το n, count: μετρητής διαιρετών του n */ for (i=1; i<=n; ++i) /* έλεγχος των ακεραίων από το 1 μέχρι το n */ if (n % i == 0) /* αν το n διαιρείται ακριβώς με το i... */ printf("%d ", i); /* εκτυπώνεται το i... */ ++count; /* και αυξάνεται κατά 1 το πλήθος των διαιρετών */ return(count); /* επιστροφή του πλήθους των διαιρετών του n */ main() int num; do printf("give a positive integer number: "); scanf("%d", &num); while (num<=0); printf("\n Amount of %d divisors = %d", num, divisors(num)); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 5

Θέμα 4 α) ΑΡΧΗ ΔΙΑΒΑΣΕ Ν (N>0) AND (N mod 2)=0? ΝΑΙ ΟΧΙ P 1 Ι 1 S 0 ΟΧΙ Ι < N? ΤΥΠΩΣΕ S ΝΑΙ P P*Ι*(I+1) ΤΕΛΟΣ S S + 1/P Ι Ι + 2 Σημειώνεται ότι, I! = (I - 2)! * (I - 1) * I, όπου I άρτιος ακέραιος αριθμός. ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 6

β) Το συγκεκριμένο τμήμα προγράμματος θα τυπώσει στην οθόνη τα εξής: *****! ****! ***! γ) Με χρήση της εντολής do - while, ένας ισοδύναμος βρόχος είναι ο εξής: y=100; do printf("y= %d", y); y-=2; while (y>1); Θέμα 5 α) Μετατροπή του δεκαδικού 34 σε δυαδικό: Βάση Πηλίκο Υπόλοιπο 34:2 = 17 0 17:2 = 8 1 8:2 = 4 0 4:2 = 2 0 2:2 = 1 0 1:2 = 0 1 1 0 0 0 1 0 <2> ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 7

Μετατροπή του δεκαδικού 74 σε δυαδικό: Βάση Πηλίκο Υπόλοιπο 74:2 = 37 0 37:2 = 18 1 18:2 = 9 0 9:2 = 4 1 4:2 = 2 0 2:2 = 1 0 1:2 = 0 1 1 0 0 1 0 1 0 <2> Συμπλήρωμα ως προς 2 του 1001010 <2> : 01001010 <2> Συμπλήρωμα ως προς 1: 10110101 <2> Συμπλήρωμα ως προς 2: 10110110 <2> Αρκεί να προσθέσουμε τον μειωτέο 00100010 <2> στο συμπλήρωμα ως προς 2 του αφαιρετέου. μεταφορά: 1 11 00100010 + 10110110 11011000 Το αποτέλεσμα της αφαίρεσης είναι 11011000 <2>. Για να επαληθεύσουμε το αποτέλεσμα, βρίσκουμε την αντίστοιχη τιμή στο δεκαδικό σύστημα. Αφού το αριστερά δυαδικό ψηφίο είναι 1 πρόκειται για αρνητικό αριθμό οπότε θα πρέπει να βρούμε το συμπλήρωμα ως προς 2 για να εκτιμήσουμε την αξία του, όπως παρακάτω: Συμπλήρωμα ως προς 2 του αποτελέσματος: 11011000 <2> Συμπλήρωμα ως προς 1: 00100111 <2> Συμπλήρωμα ως προς 2: 00101000 <2> Το οποίο ισούται με 40 <10> Συνεπώς, το αποτέλεσμα της αφαίρεσης (11011000 <2> )είναι ίσο με -40 <10> ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 8

β) Η εκτέλεση της πρόσθεσης γίνεται ως ακολούθως: σε μεταφορά: 1 3F3 <16> + 7C <16> 46F <16> Για να την επαληθεύσουμε μέσω του δεκαδικού αρχικά μετατρέπουμε τους αριθμούς στο δεκαδικό: 3F3 <16> = 3*16 2 + F*16 1 + 3*16 0 = 3*256 + 15 *16 + 3 = 768 + 240 + 3 = 1011 <10> 7C <16> = 7*16 1 + C*16 0 = 7*16 + 12 = 112 + 12 = 124 <10> Στη συνέχεια τους προσθέτουμε: 1011 <10> + 124 <10> = 1135 <10> Τέλος, μετατρέπουμε το αποτέλεσμα στο δεκαεξαδικό: Βάση Πηλίκο Υπόλοιπο 1135:16 = 70 15 F 70:16 = 4 6 4:16 = 0 4 4 6 F <16> γ) int depth(int j) int count=0; /* μετρητής βάθους, αρχικά 0 */ if (j<0) /* αν η θέση είναι αρνητικός αριθμός */ return(-1); /* επιστρέφεται -1 */ while (j>0) /* διαφορετικά, όσο η θέση είναι θετικός αριθμός */ ++count; /* αύξηση του βάθους κατά 1 */ j = (j - 1)/2; /* μετακίνηση στη θέση του γονέα */ return(count); /* επιστροφή του βάθους */ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2015 9