ΕΝΔΕΙΚΤΙΚΕΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α Α1. 1 ΣΩΣΤΟ 2 ΛΑΘΟΣ 3 ΛΑΘΟΣ 4 ΛΑΘΟΣ 5 ΣΩΣΤΟ Α2. α. Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Προσπέλαση, Εισαγωγή, Διαγραφή, Αναζήτηση, Ταξινόμηση, Αντιγραφή, Συγχώνευση, Διαχωρισμός, β. Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος αναζήτησης. Έτσι, δικαιολογείται η χρήση της μόνο σε περιπτώσεις όπου: ο πίνακας είναι μη ταξινομημένος, ο πίνακας είναι μικρού μεγέθους (για παράδειγμα, n 20), η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια. A3. (1) 42 (2) 50 (3) 50 (4) X (5) K (6) K 1 (7) K 1 (8) K 1 (9) K (10) K A4. α. Τα δύο τμήματα προγράμματος δεν είναι ισοδύναμα, γιατί στο τμήμα (Ι) μπορεί να μην γίνει καμία επανάληψη (έλεγχος συνθήκης ΟΣΟ στην αρχή) όταν θα διαβαστεί μια οποιαδήποτε αρνητική τιμή για το Α, ενώ στο τμήμα (ΙΙ) θα εκτελεστεί τουλάχιστον μια επανάληψη (έλεγχος συνθήκης ΜΕΧΡΙΣ_ΟΤΟΥ στο τέλος) για οποιαδήποτε τιμή (ακόμα και αρνητική) του Α διαβαστεί. Επίσης στο τμήμα (Ι) όταν το Χ πάρει την τιμή 0 θα γίνει μια ακόμα επανάληψη ενώ στο τμήμα (ΙΙ) όταν το Χ πάρει την τιμή 0 η επανάληψη θα σταματήσει. β. ΔΙΑΒΑΣΕ Α Χ Α Χ Χ 2 Υ Χ 1 ΟΣΟ Χ > 0 ΕΠΑΝΑΛΑΒΕ Χ Χ 2 Υ Χ 1 γ. ΔΙΑΒΑΣΕ Α ΓΙΑ Χ ΑΠΟ Α ΜΕΧΡΙ 0 ΜΕ_ΒΗΜΑ -2 Υ (Χ - 2) -1 ΘΕΜΑ Β Β1. α. Είναι ο τρόπος που χρησιμοποιείται από τους υπολογιστές προκειμένου να πολλαπλασιαστούν δύο ακέραιοι αριθμοί. Ακολουθείται μία επαναλαμβανόμενη διαδικασία (αλγόριθμος) η οποία απαιτεί μόνο πολλαπλασιασμό επί δύο (ολίσθηση προς τα αριστερά), διαίρεση διά δύο (ολίσθηση προς τα δεξιά) και πρόσθεση. β. ΠΡΟΓΡΑΜΜΑ ΘΕΜΑΒ1β ΑΚΕΡΑΙΕΣ: i, Α[100], P, Α, Β, temp ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 ΔΙΑΒΑΣΕ Α[i] 4
P 0 temp A[1] ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100 Α temp Β Α[i] ΟΣΟ Β > 0 ΕΠΑΝΑΛΑΒΕ ΑΝ Β MOD 2 = 1 TOTE P P + Α Α Α * 2 Β Β DIV 2 temp P ΓΡΑΨΕ P Β2. α. β. Οι τιμές που θα εμφανιστούν είναι: 32, 8 56, 14 14, 1 5
ΘΕΜΑ Γ ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ!Γ1 ΑΚΕΡΑΙΕΣ: i, k, A[15], B[8], C, key ΛΟΓΙΚΕΣ: done!γ2 ΓΙΑ i ΑΠΟ 1 μέχρι 15 ΔΙΑΒΑΣΕ A[i]!Γ3 ΓΙΑ i ΑΠΟ 1 μέχρι 8 ΔΙΑΒΑΣΕ B[i]!Γ4 C <- 0 ΓΙΑ i ΑΠΟ 1 μέχρι 8 key <- B[i] k <- 1 done <- ΨΕΥΔΗΣ ΟΣΟ done=ψευδησ ΚΑΙ k<=15 ΕΠΑΝΑΛΑΒΕ ΑΝ A[k]=key ΤΟΤΕ done <- ΑΛΗΘΗΣ k <- k + 1 ΑΝ done=αληθησ ΤΟΤΕ C <- C + 1!Γ5 ΑΝ C=8 ΤΟΤΕ ΓΡΑΨΕ '1η κατηγορία κέρδους' _ΑΝ C=7 ΤΟΤΕ ΓΡΑΨΕ '2η κατηγορία κέρδους' _ΑΝ C=6 ΤΟΤΕ ΓΡΑΨΕ '3η κατηγορία κέρδους' ΓΡΑΨΕ 'Δυστυχώς δεν κερδίζετε' 6
ΘΕΜΑ Δ ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Δ! Δ1 ΑΚΕΡΑΙΕΣ: i, j, k, pos ΠΡΑΓΜΑΤΙΚΕΣ: ΕΙΣ[52, 12], S, MO, MAX[52], ΜΙΝ, temp1, temp3 ΧΑΡΑΚΤΗΡΕΣ: ΚΑΤ[52], key, temp2 ΛΟΓΙΚΕΣ: done! Δ2 ΔΙΑΒΑΣΕ ΚΑΤ[i] _ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ ΕΙΣ[i, j] ΜΕΧΡΙΣ_ΟΤΟΥ ΕΙΣ[i, j] >= 500 ΚΑΙ ΕΙΣ[i, j] <= 10000! Δ3 ΜΙΝ <- ΕΙΣ[1, 12] ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 52 ΑΝ ΕΙΣ[i, 12] < ΜΙΝ ΤΟΤΕ ΜΙΝ <- ΕΙΣ[i, 12] ΑΝ ΕΙΣ[i, 12] = ΜΙΝ ΤΟΤΕ ΓΡΑΨΕ ΚΑΤ[i]! Δ4 ΔΙΑΒΑΣΕ key i <- 1 done <- ΨΕΥΔΗΣ ΟΣΟ i <= 52 ΚΑΙ done = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ key = ΚΑΤ[i] ΤΟΤΕ pos <- i done <- ΑΛΗΘΗΣ i <- i + 1 ΑΝ done = ΑΛΗΘΗΣ ΤΟΤΕ S <- 0 ΓΡΑΨΕ ΕΙΣ[pos, j] S <- S + ΕΙΣ[pos, j] MO <- S/12 ΓΡΑΨΕ 'Μέση ετήσια είσπραξη:', MO ΓΡΑΨΕ 'Η εταιρεία δεν διαθέτει κατάστημα στην περιοχή:', key! Δ5! 1ο βήμα: Δημιουργία μονοδιάστατου πίνακα MAX[52] MAX[i] <- -1 ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 12 ΑΝ ΕΙΣ[i,j]>MAX[i] ΤΟΤΕ MAX[i] <- ΕΙΣ[i, j]! 2ο βήμα: ταξινόμηση του MAX[52] κατά φθίνουσα σειρά ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 52 ΓΙΑ j ΑΠΟ 52 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1 ΑΝ MAX[j-1] < MAX[j] ΤΟΤΕ temp1 <- MAX[j-1] MAX[j-1] <- MAX[j] MAX[j] <- temp1 temp2 <- ΚΑΤ[j-1] ΚΑΤ[j-1] <- ΚΑΤ[j] ΚΑΤ[j] <- temp2 ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 12 7
temp3 <- ΕΙΣ[j-1, k] ΕΙΣ[j-1, k] <- ΕΙΣ[j, k] ΕΙΣ[j, k] <- temp3! δευτερεύουσα αλφαβητική ταξινόμηση _ΑΝ MAX[j-1] = MAX[j] ΚΑΙ ΚΑΤ[j-1] > ΚΑΤ[j] ΤΟΤΕ temp2 <- ΚΑΤ[j-1] ΚΑΤ[j-1] <- ΚΑΤ[j] ΚΑΤ[j] <- temp2 ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 12 temp3 <- ΕΙΣ[j-1, k] ΕΙΣ[j-1, k] <- ΕΙΣ[j, k] ΕΙΣ[j, k] <- temp3! 3ο βήμα: εμφάνιση αποτελεσμάτων ΓΡΑΨΕ 'Περιοχή:', ΚΑΤ[i] ΓΡΑΨΕ 'Μηνιαίες εισπράξεις' ΓΡΑΨΕ ΕΙΣ[i, j] ΓΡΑΨΕ 'Μεγαλύτερη μηνιαία είσπραξη:', MAX[i] 8