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

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

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

ΠΡΟΓΡΜΜΑΤΑ ΣΕ 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("*");

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

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

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

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

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

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

Ελίνα Μακρή

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

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

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

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

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διαδικασιακός Προγραμματισμός

Ελίνα Μακρή

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

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

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

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

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

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

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

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

Λυμένα παραδείγματα με τις for, while, do-while

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

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

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

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

Ασκήσεις & παραδείγματα για επανάληψη

Διαδικασιακός Προγραμματισμός

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

Αʹ. Πίνακες. Άσκηση 1. Λύση. Άσκηση 2. Λύση. Ασκήσεις Εργαστηρίου Προγραμματισμού

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 8: Συναρτήσεις. Κ.

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

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

Παραδείγματα. Γράψτε ένα πρόγραμμα που να τυπώνει τη μέση τιμή ενός συνόλου μη αρνητικών αριθμών

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

8. Συνθήκες ελέγχου, λογικοί τελεστές

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Εντολές ελέγχου ροής if, for, while, do-while

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

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

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

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

γρηγορότερα. Αν θέλουμε να μηδενίσουμε όλα τα υπόλοιπα bit μπορούμε να χρησιμοποιήσουμε την εντολή:

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; }

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

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

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

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

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

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

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

ΕΠΛ232: Εργαστήριο 2

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Transcript:

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 2 ΙΟΥΝΙΟΥ 2013 ΟΔΗΓΙΕΣ: Τα θέματα που έχετε στα χέρια σας είναι τέσσερις (4) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα ή δεν είναι καλά φωτοτυπημένη ενημερώστε άμεσα τον επιτηρητή. Η άριστη απάντηση σε κάθε θέμα βαθμολογείται με δύο (2) μονάδες. Τα ερωτήματα κάθε θέματος (α, β, κλπ.) δεν είναι απαραίτητα ισοδύναμα μεταξύ τους. Απαντήστε και στα πέντε (5) θέματα που ακολουθούν. Γράψτε στο γραπτό σας ΚΑΘΑΡΑ ΚΑΙ ΜΕ ΕΥΚΡΙΝΕΙΑ το θέμα και το ερώτημα στο οποίο απαντάτε κάθε φορά. Προσπαθήστε να απαντάτε όλα τα ερωτήματα κάθε θέματος μαζί. Η αναγραφή σχολίων όπου απαιτείται (προγράμματα σε C, ψευδοκώδικας) είναι υποχρεωτική. Ο συνολικός χρόνος εξέτασης είναι τρεις (3) ώρες ακριβώς. Θέμα 1 (2,0 μονάδες) Ο πίνακας που ακολουθεί αποτελεί τη συνεχόμενη αναπαράσταση ενός δένδρου, του οποίου οι κόμβοι έχουν ακέραιες τιμές, διαφορετικές μεταξύ τους. 1 2 3 4 5 6 7 8 9 10 11 12 14 X 4 10 8 2 3 9 5 7 6 1 α) Για ποιες τιμές του Χ το δυαδικό δένδρο είναι δένδρο - σωρός; Αιτιολογήστε την απάντησή σας. β) Με ποια σειρά θα επισκεφθούμε τους κόμβους του δένδρου, χρησιμοποιώντας: i) την προδιατεταγμένη, ii) την ενδο-διατεταγμένη και iii) τη μετα-διατεταγμένη διαπέραση; γ) Διαγράφουμε διαδοχικά τη ρίζα του δένδρου - σωρού και κάθε στοιχείο που διαγράφεται το εισάγουμε σε ένα (αρχικά κενό) Δυαδικό Δένδρο Αναζήτησης (ΔΔΑ). Ποιο είναι το ύψος του ΔΔΑ που προκύπτει? δ) Με ποια σειρά θα επισκεφθούμε τους κόμβους του Δυαδικού Δένδρου Αναζήτησης που προέκυψε από το ερώτημα (γ), χρησιμοποιώντας: i) την προ-διατεταγμένη και ii) τη μεταδιατεταγμένη διαπέραση; ΘΕΜΑΤΑ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 σελ. 1 από 4

Θέμα 2 (2,0 μονάδες) α1) Η συνάρτηση pylh που ακολουθεί έχει ως παραμέτρους τα a και b που παίρνουν τιμές 0 ή 1 και υλοποιεί τη λειτουργία μιας πύλης. int pylh(int a, int b) return ((a b) &&!(a && b)); i. Σχεδιάστε τον πίνακα αληθείας βάσει της συνάρτησης. ii. Από τον πίνακα αληθείας προσδιορίστε ποια πύλη υλοποιεί η συνάρτηση pylh. α2) Ποια θα είναι η έξοδος του παρακάτω προγράμματος που καλεί τη συνάρτηση pylh του ερωτήματος (α1); main () printf("%d", pylh(1, 0)); printf("%d", pylh(1, 1)); printf("%d", pylh(0, 1)); printf("%d", pylh(0, 0)); β) Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο θα διαβάζει ένα αλφαριθμητικό το πολύ 20 χαρακτήρων και θα το εμφανίζει με αντίστροφη σειρά (από τον τελευταίο χαρακτήρα προς τον πρώτο). Υπόδειξη: Μπορείτε να χρησιμοποιήστε τη συνάρτηση βιβλιοθήκης strlen() που επιστρέφει το μήκος ενός αλφαριθμητικού. Θέμα 3 (2,0 μονάδες) Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο θα διαβάζει με αμυντικό προγραμματισμό μια χρονική στιγμή, η οποία προσδιορίζεται από την ώρα, τα λεπτά και τα δευτερόλεπτα, θα τα αποθηκεύει σε δομή time, που δίνεται στη συνέχεια, και θα εμφανίζει στην οθόνη τη χρονική στιγμή μετά από 30 δευτερόλεπτα. Θεωρήστε ότι η ώρα κωδικοποιείται σε 24ωρη βάση (από 0 έως 23). struct time int hour; int minutes; int seconds; ; ΘΕΜΑΤΑ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 σελ. 2 από 4

Θέμα 4 (2,0 μονάδες) α) Γράψτε πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο θα διαβάζει συνεχώς ακέραιους αριθμούς (θετικούς και αρνητικούς) από το πληκτρολόγιο μέχρι ο χρήστης να δώσει τον αριθμό 0. Μετά από κάθε νέα εισαγωγή αριθμού θα πρέπει να τυπώνει μια γραμμή που θα γράφει κατά σειρά: τον αύξοντα αριθμό (Α/Α) της εισαγωγής, τον αριθμό που εισήχθη, τον μικρότερο από όλους τους αριθμούς που έχουν εισαχθεί μέχρι εκείνη τη στιγμή, τον μεγαλύτερο από όλους τους αριθμούς που έχουν εισαχθεί μέχρι εκείνη τη στιγμή, το μέσο όρο όλων των αριθμών που έχουν εισαχθεί μέχρι εκείνη τη στιγμή. Με την εισαγωγή του αριθμού 0 το πρόγραμμα να εμφανίζει Τέλος και να τερματίζεται. Ακολουθεί παράδειγμα εκτέλεσης. Δώσε αριθμό: 4 Α/Α=1 Αριθμός = 4 Μικρότερος = 4 Μεγαλύτερος = 4 Μέσος Όρος = 4.00 Δώσε αριθμό: 2 Α/Α=2 Αριθμός = 2 Μικρότερος = 2 Μεγαλύτερος = 4 Μέσος Όρος = 3.00 Δώσε αριθμό: 13 Α/Α=3 Αριθμός = 13 Μικρότερος = 2 Μεγαλύτερος = 13 Μέσος Όρος = 6.33 Δώσε αριθμό: -2 Α/Α=4 Αριθμός = -2 Μικρότερος = -2 Μεγαλύτερος = 13 Μέσος Όρος = 4.25 Δώσε αριθμό: -7 Α/Α=5 Αριθμός = -7 Μικρότερος = -7 Μεγαλύτερος = 13 Μέσος Όρος = 2.00 Δώσε αριθμό: 0 Τέλος β) Να γραφεί σε ψευδοκώδικα ο αλγόριθμος ΥΠΟΛΟΓΙΣΜΟΣ-ΑΘΡΟΙΣΜΑΤΟΣ-ΔΥΝΑΜΕΩΝ που θα υπολογίζει την παρακάτω παράσταση Σ χωρίς τη χρήση τελεστή ύψωσης σε δύναμη. Σ = 1 1 + 3 3 + 5 5 + + N N όπου το Ν είναι θετικός περιττός ακέραιος αριθμός. Να εφαρμόσετε αμυντικό προγραμματισμό κατά την ανάγνωση του Ν, ώστε να είναι περιττός και θετικός αριθμός. ΘΕΜΑΤΑ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 σελ. 3 από 4

Θέμα 5 (2,0 μονάδες) α) Υπολογίστε το συμπλήρωμα ως προς 2 των παρακάτω δυαδικών αριθμών, όταν το μήκος λέξης είναι αυτό που φαίνεται σε κάθε ερώτημα (δηλαδή, μην συμπληρώσετε επιπλέον μηδενικά στην αρχή των αριθμών): i) 111 ii) 000111 β) Μετατρέψτε τον αριθμό 29,35 <10> από το δεκαδικό σύστημα στο δυαδικό, με ακρίβεια 5 κλασματικών ψηφίων, και στη συνέχεια από το δυαδικό σύστημα στο δεκαεξαδικό. γ) Εκτελέστε τις ακόλουθες πράξεις στο σύστημα αρίθμησης στο οποίο δίνονται οι αριθμοί (δηλαδή, μην τους μετατρέψετε σε άλλο σύστημα για να κάνετε τις πράξεις): i) 42574,1 <8> + 57421,7 <8> ii) A1F1,1 <16> + D6F,E <16> δ) Να δοθεί ο πίνακας αληθείας καθώς και η λογική συνάρτηση που υλοποιείται από το κύκλωμα του κάτωθι σχήματος: ΚΑΛΗ ΕΠΙΤΥΧΙΑ! ΘΕΜΑΤΑ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 σελ. 4 από 4

Θέμα 1 ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - ΙΟΥΝΙΟΣ 2013 ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ α) 14 Χ 4 10 8 2 3 9 5 7 6 1 Σχηματίζουμε το δένδρο με βάση τη συνεχόμενη αναπαράστασή του. Για να είναι δένδρο - σωρός το παραπάνω δένδρο, το Χ πρέπει να είναι μικρότερο του 14 (γονέας του Χ) και μεγαλύτερο του 10 (το μεγαλύτερο από τα παιδιά του Χ). Επομένως το Χ μπορεί να έχει τιμή 11, 12 ή 13. β) i. Προ-διατεταγμένη διαπέραση: 14 - Χ - 10-9 - 5-8 - 7-6 - 4-2 - 1-3 ii. Ενδο-διατεταγμένη διαπέραση: 9-10 - 5 - Χ - 7-8 - 6-14 - 1-2 - 4-3 iii. Μετα-διατεταγμένη διαπέραση: 9-5 - 10-7 - 6-8 - Χ - 1-2 - 3-4 - 14 γ) Διαγράφουμε διαδοχικά τη ρίζα του δέντρου - σωρού, άρα το μεγαλύτερο κάθε φορά στοιχείο του. Επομένως, παίρνουμε τα στοιχεία του δέντρου - σωρού με φθίνουσα διάταξη και το Δυαδικό Δέντρο Αναζήτησης που προκύπτει έχει ύψος 11, αφού τα στοιχεία του είναι 12. δ) Βάσει της απάντησης στο ερώτημα (γ), i) η προ-διατεταγμένη διαπέραση θα επισκεφθεί τα στοιχεία με φθίνουσα διάταξη (14-Χ-10-9-8-7-6-5-4-3-2-1) και ii) η μετα-διατεταγμένη διαπέραση θα επισκεφθεί τα στοιχεία με αύξουσα διάταξη (1-2-3-4-5-6-7-8-9-10-Χ-14). ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 1

Θέμα 2 α1) i. Πίνακας αληθείας: a b a b a&&b!(a&&b) (a b)&&!(a&&b) 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 ii. Από τον πίνακα αληθείας προκύπτει ότι η συνάρτηση pylh υλοποιεί την πύλη XOR. α2) Βάσει του πίνακα αληθείας προκύπτει ότι η έξοδος του προγράμματος θα είναι 1010. β) #include <stdio.h> #include <stdlib.h> #include <string.h> main() int t; char p[21]; printf("insert the text\n"); gets(p); /* Εμφάνισε το κείμενο αντίστροφα */ printf("\n"); for (t=strlen(p)-1; t>=0; t--) printf("%c", p[t]); system("pause"); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 2

Θέμα 3 #include <stdio.h> #include <stdlib.h> struct time int hour; int minutes; int seconds; ; struct time timeupdate (struct time now); main() struct time currenttime, nexttime; printf("insert hour: "); do scanf("%d", &currenttime.hour); if (currenttime.hour < 0 currenttime.hour > 23) printf("wrong hour value. Please insert hour: "); while (currenttime.hour < 0 currenttime.hour > 23); printf("insert minutes: "); do scanf("%d", &currenttime.minutes); if (currenttime.minutes < 0 currenttime.minutes > 59) printf("wrong minutes value. Please insert minutes: "); while (currenttime.minutes < 0 currenttime.minutes > 59); printf("insert seconds: "); do scanf("%d", &currenttime.seconds); if (currenttime.seconds < 0 currenttime.seconds > 59) printf("wrong seconds value. Please insert seconds: "); while (currenttime.seconds < 0 currenttime.seconds > 59); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 3

printf("time is %d:%d:%d\n", currenttime.hour, currenttime.minutes, currenttime.seconds); nexttime = timeupdate (currenttime); printf ("Half a minute later time is %d:%d:%d\n", nexttime.hour, nexttime.minutes, nexttime.seconds ); system("pause"); struct time timeupdate(struct time now) now.seconds = now.seconds + 30; if (now.seconds >= 60) // next minute now.seconds = now.seconds - 60; now.minutes++; if (now.minutes == 60) // next hour now.minutes = 0; now.hour++; if (now.hour == 24) // midnight now.hour = 0; return now; ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 4

Θέμα 4 α) #include <stdio.h> #include <stdlib.h> main() int arithmos, plithos=0, synolo=0, max_n, min_n; float mesos_oros; printf("δώσε αριθμό: "); scanf("%d", &arithmos); while (arithmos!=0) plithos++; if (plithos==1) max_n=arithmos; min_n=arithmos; else if (arithmos>max_n) max_n=arithmos; if (arithmos<min_n) min_n=arithmos; synolo+=arithmos; mesos_oros=(float)synolo/(float)plithos; printf("α/α=%d\t Αριθμός=%d\t Μικρότερος=%d\t Μεγαλύτερος=%d\t Μέσος Όρος=%.2f\n", plithos, arithmos, min_n, max_n, mesos_oros); printf("δώσε αριθμό: "); scanf("%d", &arithmos); printf("τέλος\n"); system("pause"); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 5

β) ΑΛΓΟΡΙΘΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ-ΑΘΡΟΙΣΜΑΤΟΣ-ΔΥΝΑΜΕΩΝ ΔΕΔΟΜΕΝΑ SUM, K, N, PROD, J: INTEGER; ΑΡΧΗ ΕΠΑΝΑΛΑΒΕ ΤΥΠΩΣΕ ("ΔΩΣΕ ΘΕΤΙΚΟ ΠΕΡΙΤΤΟ ΑΚΕΡΑΙΟ ΓΙΑ ΤΟ N: "); ΔΙΑΒΑΣΕ (N); ΜΕΧΡΙ ((N > 0) ΚΑΙ (N MOD 2 = 1)); SUM:= 0; ΓΙΑ K:= 1 ΕΩΣ N ΒΗΜΑ 2 ΕΠΑΝΑΛΑΒΕ PROD:= 1; ΓΙΑ J:= 1 ΕΩΣ K ΕΠΑΝΑΛΑΒΕ PROD := PROD * K ΓΙΑ-ΤΕΛΟΣ; SUM:= SUM + PROD ΓΙΑ-ΤΕΛΟΣ ΤΕΛΟΣ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 6

Θέμα 5 α) i) 111: Συμπλήρωμα ως προς 1 = 000, Πρόσθεση 1: 000+1=001 ii) 000111: Συμπλήρωμα ως προς 1 = 111000, Πρόσθεση 1: 111000+1=111001 β) Διαίρεση Πηλίκο Υπόλοιπο 29 : 2 = 14 1 14 : 2 = 7 0 7 : 2 = 3 1 3 : 2 = 1 1 1 : 2 = 0 1 1 1 1 0 1 0,35 x 2 = 0,70 0 0,70 x 2 = 1,40 1 0,40 x 2 = 0,80 0 0,80 x 2 = 1,60 1 0,60 x 2 = 1,20 1 Επομένως, 29,35 <10> = 11101,01011 <2> 11101,01011 <2> = 0001 1101,0101 1000 <2> = 1D,58 <16> γ) i) μεταφορά: 1111 1. 42574,1 + 57421,7 122216,0 και τελικό αποτέλεσμα: 122216 <8> ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 7

ii) μεταφορά: 11 A1F1,1 + D6F,E AF60,F και τελικό αποτέλεσμα: (AF60,F) 16 δ) A B C NOT B Α AND (NOT Β) A AND C X 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 X = (Α AND NOT Β) OR (A AND C) ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΝΙΟΣ 2013 8

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 10 ΙΟΥΛΙΟΥ 2013 ΟΔΗΓΙΕΣ: Τα θέματα που έχετε στα χέρια σας είναι τέσσερις (4) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα ή δεν είναι καλά φωτοτυπημένη ενημερώστε άμεσα τον επιτηρητή. Η άριστη απάντηση σε κάθε θέμα βαθμολογείται με δύο (2) μονάδες. Τα ερωτήματα κάθε θέματος (α, β, κλπ.) δεν είναι απαραίτητα ισοδύναμα μεταξύ τους. Απαντήστε και στα πέντε (5) θέματα που ακολουθούν. Γράψτε στο γραπτό σας ΚΑΘΑΡΑ ΚΑΙ ΜΕ ΕΥΚΡΙΝΕΙΑ το θέμα και το ερώτημα στο οποίο απαντάτε κάθε φορά. Προσπαθήστε να απαντάτε όλα τα ερωτήματα κάθε θέματος μαζί. Η αναγραφή σχολίων όπου απαιτείται (προγράμματα σε γλώσσα C) είναι υποχρεωτική. Ο συνολικός χρόνος εξέτασης είναι τρεις (3) ώρες ακριβώς. Θέμα 1 (2,0 μονάδες) Στον παρακάτω πίνακα δίνεται η συνεχόμενη αναπαράσταση ενός δυαδικού δένδρου. Οι θέσεις χωρίς τιμή υποδεικνύουν ότι στις αντίστοιχες θέσεις του δένδρου δεν υπάρχουν κόμβοι. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Δ Υ Σ Κ Ο Λ Η Μ Ε Ρ Α α) Σχεδιάστε το αντίστοιχο δυαδικό δένδρο. β) Διατηρώντας σταθερή τη μορφή του δένδρου που προέκυψε από το ερώτημα (α), αναδιατάξτε τις τιμές στους κόμβους του, έτσι ώστε να μετατραπεί σε δυαδικό δένδρο αναζήτησης. Αιτιολογήστε την απάντησή σας. γ) Αλλάξτε τη μορφή του δένδρου, ώστε να σχηματίσετε ένα πλήρες δυαδικό δένδρο αναζήτησης που οι κόμβοι του έχουν τις τιμές του παραπάνω πίνακα. δ) Στο δένδρο που προέκυψε από το ερώτημα (γ), δώστε i) την προ-διατεταγμένη, ii) την ενδο-διατεταγμένη και iii) τη μετα-διατεταγμένη διαπέραση. ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 σελ. 1 από 4

Θέμα 2 (2,0 μονάδες) α) Τι θα τυπώσει η παρακάτω αναδρομική συνάρτηση όταν κληθεί με παράμετρο n, όπου n είναι θετικός ακέραιος (δηλαδή, μεγαλύτερος από ή ίσος με 1); void display_num(int n) if (n==1) printf("%d\n", n); else printf("%d, ", n); display_num(n-1); β) Δίνεται το ακόλουθο λογικό κύκλωμα. Θεωρήστε ότι η είσοδος C0 έχει τιμή σταθερή και ίση με 0. i. Δώστε τον πίνακα αληθείας του κυκλώματος. ii. Χρησιμοποιήστε τον πίνακα αληθείας για να βρείτε τις λογικές συναρτήσεις για το S και το C1. ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 σελ. 2 από 4

Θέμα 3 (2,0 μονάδες) α) Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο: i. θα δημιουργεί μια απλά διασυνδεδεμένη λίστα με 3 κόμβους. Κάθε κόμβος θα περιέχει έναν ακέραιο αριθμό, τον οποίο θα δίνει ο χρήστης από το πληκτρολόγιο, και έναν δείκτη στον επόμενο κόμβο. ii. στη συνέχεια, θα τυπώνει τους παραπάνω αριθμούς διαπερνώντας τη λίστα. β) i. Μετατρέψτε τον αριθμό A4E,C7 <16> από το δεκαεξαδικό στο οκταδικό σύστημα. Να δειχθεί η διαδικασία μετατροπής. ii. Έστω ένας υπολογιστής με μήκος λέξης 8 δυαδικών ψηφίων. Εκτελέστε την αφαίρεση 1101010 <2> - 1001111 <2> στο συγκεκριμένο υπολογιστή, χρησιμοποιώντας παράσταση συμπληρώματος ως προς 2. Θέμα 4 (2,0 μονάδες) α) Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, στο οποίο θα εισάγονται τιμές σε έναν πίνακα ακεραίων, διαστάσεων 8 x 8. Στη συνέχεια το πρόγραμμα θα υπολογίζει και θα εμφανίζει το άθροισμα των στοιχείων του πίνακα μέχρι το πρώτο μηδενικό στοιχείο (αν υπάρχει τέτοιο) ή όλων των στοιχείων του πίνακα αν δεν υπάρχει μηδέν (0) στον πίνακα. Η διαπέραση του πίνακα να γίνεται κατά γραμμές και σε κάθε γραμμή τα στοιχεία να προσπελαύνονται από αριστερά προς τα δεξιά. β) Να γραφεί η συνάρτηση void search(int num, int pin[m][n]) στη γλώσσα προγραμματισμού C, για υπολογισμό του πλήθους εμφανίσεων της τιμής num σε μη ταξινομημένο πίνακα pin, ακεραίων αριθμών και διαστάσεων Μ x Ν. Η συνάρτηση να εκτυπώνει σχετικό μήνυμα αν το στοιχείο με τιμή num υπάρχει στον πίνακα και πόσες φορές. ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 σελ. 3 από 4

Θέμα 5 (2,0 μονάδες) α) Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο θα διαβάζει 10 ακεραίους αριθμούς και θα τους εισάγει σε μονοδιάστατο πίνακα. Να χρησιμοποιηθεί αμυντικός προγραμματισμός, για να εξασφαλιστεί ότι όλοι οι αριθμοί του πίνακα θα είναι διαφορετικοί μεταξύ τους. Μετά την ολοκλήρωση του διαβάσματος να εμφανίζονται οι αριθμοί με την αντίστροφη σειρά από τη σειρά εισαγωγής τους. β) Τι θα εμφανίσει στην οθόνη η παρακάτω συνάρτηση, όταν κληθεί με τιμή παραμέτρου Ν=5; void stars(int N) int i, j; for (i=0; i<n; i++) for (j=0; j<=i; j++) printf("*"); printf("\n"); for (i=0; i<n; i++) for (j=n; j>i; j--) printf("*"); printf("\n"); ΚΑΛΗ ΕΠΙΤΥΧΙΑ! ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 σελ. 4 από 4

Θέμα 1 ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - ΙΟΥΛΙΟΣ 2013 ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ α) Δ Υ Σ Κ Ο Λ Η Μ Ε Ρ Α β) Ταξινομούμε τους αριθμούς κατ αλφαβητική σειρά: Α, Δ, Ε, Η, Κ, Λ, Μ, Ο, Ρ, Σ, Υ Στη συνέχεια, σε δένδρο με την ίδια δομή (χωρίς περιεχόμενα), εφαρμόζουμε την ενδοδιατεταγμένη διαπέραση τοποθετώντας τα ταξινομημένα στοιχεία και προκύπτει: Κ Α Ρ Ε Μ Υ Δ Η Λ Ο Σ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 1

γ) Αρχικά, σχηματίζουμε τη δομή ενός πλήρους δυαδικού δένδρου με 11 στοιχεία. Στη συνέχεια, εφαρμόζουμε την ενδο-διατεταγμένη διαπέραση τοποθετώντας στο κενό πλήρες δένδρο τα ταξινομημένα στοιχεία Α, Δ, Ε, Η, Κ, Λ, Μ, Ο, Ρ, Σ, Υ και προκύπτει: Ο Η Σ Δ Λ Ρ Υ Α Ε Κ Μ δ) i) Προ-διατεταγμένη διαπέραση: Ο - Η - Δ - Α - Ε - Λ - Κ - Μ - Σ - Ρ - Υ ii) Ενδο-διατεταγμένη διαπέραση: Α - Δ - Ε - Η - Κ - Λ - Μ - Ο - Ρ - Σ - Υ iii) Μετα-διατεταγμένη διαπέραση: Α - Ε - Δ - Κ - Μ - Λ - Η - Ρ - Υ - Σ - Ο ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 2

Θέμα 2 α) Η αναδρομική συνάρτηση display_num(n) τυπώνει στην οθόνη όλους τους θετικούς ακεραίους αριθμούς από n έως 1, όπου n θετικός ακέραιος που αποτελεί την παράμετρο εισόδου για τη συνάρτηση. Για παράδειγμα, αν n=3, τότε η συνάρτηση τυπώνει: 3, 2, 1. β) A Β C0 K = A NAND Β L = A XOR Β M = L NAND C0 C1 = K NAND M S = L XOR C0 0 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 0 0 1 1 0 C1 = (A NAND Β) NAND ((A XOR Β) NAND C0) Βάσει του πίνακα αληθείας: C1 = A AND Β S = (A XOR Β) XOR C0 Βάσει του πίνακα αληθείας: S = A XOR Β ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 3

Θέμα 3 α) #include <stdio.h> #include <stdlib.h> struct entry /* Η δομή κάθε κόμβου */ int value; struct entry *next; ; main() struct entry n1, n2, n3; /* Δήλωση των τριών κόμβων */ struct entry *list_pointer = &n1; /* Δείκτης αρχής */ printf("dose timh 1ou komvou: "); scanf("%d", &n1.value); /* Διάβασμα τιμής 1ου κόμβου */ n1.next = &n2; /* Σύνδεση με τον 2ο κόμβο */ printf("dose timh 2ou komvou: "); scanf("%d", &n2.value); /* Διάβασμα τιμής 2ου κόμβου */ n2.next = &n3; /* Σύνδεση με τον 3ο κόμβο */ printf("dose timh 3ou komvou: "); scanf("%d", &n3.value); /* Διάβασμα τιμής 3ου κόμβου */ n3.next = NULL; /* Στο τέλος της λίστας ο δείκτης έχει τιμή NULL */ printf("oi times einai:\n"); while (list_pointer!= NULL) /* Όσο δεν έχουμε φτάσει στο τέλος της λίστας */ printf ("%i\n", list_pointer->value); /* Εμφάνιση της τιμής του κόμβου */ list_pointer = list_pointer->next; /* Μετάβαση στον επόμενο κόμβο */ system("pause"); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 4

β.i) Μετατρέπουμε ψηφίο προς ψηφίο το δεκαεξαδικό αριθμό A4E,C7 <16> χρησιμοποιώντας τον πίνακα αντιστοίχησης των δεκαεξαδικών σε δυαδικούς. 0 0000 4 0100 8 1000 C 1100 1 0001 5 0101 9 1001 D 1101 2 0010 6 0110 Α 1010 E 1110 3 0011 7 0111 Β 1011 F 1111 1010 0100 1110, 1100 0111 Γίνεται ομαδοποίηση ανά 3 bits: 101 001 001 110, 110 001 110 και στη συνέχεια μετατρέπουμε τον αριθμό, χρησιμοποιώντας τον πίνακα αντιστοίχησης των δυαδικών σε οκταδικούς. 0 000 4 100 1 001 5 101 2 010 6 110 3 011 7 111 Το τελικό αποτέλεσμα είναι: A4E,C7 <16> = 5116,616 <8> β.ii) 0110 1010 0100 1111 1011 0000 1011 0001 + 1 0001 1011 Επομένως, 1101010 <2> - 1001111 <2> = 11011 <2> ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 5

Θέμα 4 α) #include <stdio.h> #include <stdlib.h> main() int x[8][8], i, j, sum=0, stop=0; /* Η stop θα γίνει 1 όταν βρεθεί το πρώτο 0 */ for (i=0; i<8; i++) for (j=0; j<8; j++) /* Διαπέραση του πίνακα για εισαγωγή στοιχείων */ printf("dose stoixeio sti thesi (%d, %d)\n", i, j); scanf("%d", &x[i][j]); for (i=0; (i<8)&&(stop==0); i++) /* Η επανάληψη θα συνεχιστεί όσο */ /* υπάρχουν στοιχεία και δεν έχει */ for (j=0; (j<8)&&(stop==0); j++) /* εντοπιστεί 0 στον πίνακα. */ if (x[i][j]!=0) /* Αν το στοιχείο δεν είναι 0 */ sum+=x[i][j]; /* τότε προστίθεται στο sum */ else stop=1; /* αλλιώς ενεργοποιείται το stop */ printf("athroima = %d\n", sum); /* Εμφάνιση αθροίσματος */ system("pause"); β) void search(int num, int pin[m][n]) int i, j, count=0; /* Ο μετρητής count αρχικοποιείται στην τιμή 0 */ for (i=0; i<m; ++i) for (j=0; j<n; ++j) /* Διαπέραση του πίνακα για έλεγχο στοιχείων */ if (pin[i][j] == num) /* Αν το στοιχείο ισούται με num */ ++count; /* αυξάνεται ο μετρητής count κατά 1 */ if (count>0) /* Εμφάνιση μηνυμάτων κατά περίπτωση */ printf("to stoixeio %d yparxei ston pinaka %d fores", num, count); else printf("to stoixeio %d den yparxei ston pinaka ", num); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 6

Θέμα 5 α) #include <stdio.h> #include <stdlib.h> #define MEGETHOS 10 main() int i, j, found, ar[megethos]; printf("doste ta stoixeia tou pinaka: \n"); for (i=0; i<megethos; i++) /* Διαπέραση του πίνακα */ do printf("doste %do arithmo: ", i+1); scanf("%d", &ar[i]); /* Διάβασμα νέου στοιχείου */ found = 0; /* Η found θα γίνει 1 αν η τιμή υπάρχει ήδη στον πίνακα */ for (j=0; j<i; j++) /* Διαπέραση του πίνακα μέχρι την προηγούμενη θέση */ if (ar[j] == ar[i]) /* Αν η τιμή έχει εισαχθεί σε προηγούμενη θέση */ printf("o arithmos %d yparxei.\n", ar[i]); break; found = 1; /* ενεργοποιείται η found */ while (found==1); /* Αν έχει ενεργοποιηθεί η found θα ξαναδιαβαστεί το στοιχείο */ /* Τέλος του διαβάσματος του πίνακα */ printf("\n"); printf("o pinakas anestrammenos einai: \n"); for (i = MEGETHOS-1; i>=0; i--) /* Διαπέραση του πίνακα από το τέλος προς την αρχή */ printf("%d\n", ar[i]); /* Εμφάνιση της τιμής του στοιχείου του πίνακα */ printf("\n"); system("pause"); ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 7

β) H συνάρτηση stars(), όταν καλείται με παράμετρο Ν = 5, τυπώνει στην πρώτη γραμμή έναν αστερίσκο, στη δεύτερη γραμμή δύο αστερίσκους κ.ο.κ. και στην πέμπτη γραμμή πέντε αστερίσκους. Στη συνέχεια, τυπώνει στην έκτη γραμμή πέντε αστερίσκους, στη έβδομη γραμμή τέσσερις αστερίσκους κ.ο.κ. και στη δέκατη γραμμή έναν αστερίσκο. Συγκεκριμένα, τυπώνει: * ** *** **** ***** ***** **** *** ** * ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΕΠΑΝΑΛΗΠΤΙΚΩΝ ΕΞΕΤΑΣΕΩΝ ΙΟΥΛΙΟΣ 2013 8