26 Απριλίου 2012

Λύσεις ΟΕΦΕ 2012



Α3.
Αλγόριθμος Μετατροπή
μο <-- 9
Όσο μο <= 9  επανάλαβε
                S <-- 0
                i <-- 10
                Όσο i > = 1 επανάλαβε
                                διάβασε βαθμός
                                s <--  s + βαθμός
                                i <-- i – 1
                τέλος_επανάληψης
                μο <--  s/10
τέλος_επανάληψης
                                    τέλος Μετατροπή      
    


ΘΕΜΑ Γ
ΠΡΟΓΡΑΜΜΑ thema_3
! Γ1
ΜΕΤΑΒΛΗΤΕΣ
                ΑΚΕΡΑΙΕΣ : Κ1, Κ2, πόντοι, ΣΕΤ, ΣΚΟΡ[5,2], ΝΙΚΕΣ1, ΝΙΚΕΣ2
                ΧΑΡΑΚΤΗΡΕΣ : ΟΝ1, ΟΝ2, winner
ΑΡΧΗ
! Γ2
ΔΙΑΒΑΣΕ ΟΝ1, ΟΝ2
ΣΕΤ <-- 0
ΝΙΚΕΣ1 <-- 0, ΝΙΚΕΣ2 <-- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
                ΣΕΤ <-- ΣΕΤ +1
                ΑΝ ΣΕΤ <=4 ΤΟΤΕ
                Πόντοι <-- 25
ΑΛΛΙΩΣ
                            Πόντοι <-- 15
                ΤΕΛΟΣ_ΑΝ
Κ1<--0, Κ2<--0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
! Γ3.1
ΔΙΑΒΑΣΕ winner
ΑΝ winner = ΟΝ1 ΤΟΤΕ
Κ1 <-- Κ1 + 1
ΑΛΛΙΩΣ
Κ2 <-- Κ2 + 1
ΤΕΛΟΣ_ΑΝ
! Γ3.2
ΜΕΧΡΙΣ_ΟΤΟΥ (Κ1 >=  πόντοι Ή Κ2>= πόντοι ) ΚΑΙ Α_Τ(Κ1 – Κ2) >= 2
! Γ3.3
ΚΑΛΕΣΕ ΤΕΛΙΚΟ_ΣΚΟΡ(ΣΕΤ, Κ1, Κ2, ΣΚΟΡ)
ΑΝ Κ1 > Κ2 ΤΟΤΕ
ΝΙΚΕΣ1 <-- ΝΙΚΕΣ1 + 1
ΑΛΛΙΩΣ
ΝΙΚΕΣ2 <-- ΝΙΚΕΣ2 + 1
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ  ΝΙΚΕΣ1 = 3 ‘Η ΝΙΚΕΣ2 = 3
! Γ4
ΓΡΑΨΕ ΟΝ1, ‘-‘, ΟΝ2
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΣΕΤ
ΓΡΑΨΕ ‘ΣΕΤ’, Ι, ‘:’, ΣΚΟΡ[Ι,1]. ‘-‘, ΣΚΟΡ[Ι,2]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΝΙΚΕΣ1 > ΝΙΚΕΣ2 ΤΟΤΕ
                ΓΡΑΨΕ ‘ΝΙΚΗΤΡΙΑ ΟΜΑΔΑ’, ΟΝ1
ΑΛΛΙΩΣ
                ΓΡΑΨΕ ‘ΝΙΚΗΤΡΙΑ ΟΜΑΔΑ’, ΟΝ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

! Γ5
ΔΙΑΔΙΚΑΣΙΑ ΤΕΛΙΚΟ_ΣΚΟΡ(set, Π1, Π2, ΣΚ)
ΜΕΤΑΒΛΗΤΕΣ
                ΑΚΕΡΑΙΕΣ : Π1, Π2, set, SK[5,2]
ΑΡΧΗ
SK[set, 1] <-- Π1
SK[set, 2] <-- Π2
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


Θέματα ΟΕΦΕ 2012


ΘΕΜΑ Α
Α1. Να γράψετε την λέξη Σωστό αν είναι σωστή, ή την λέξη Λάθος αν είναι λανθασμένη η πρόταση :
1. Μια συνάρτηση μπορεί να εκτελέσει τις ίδιες ακριβώς λειτουργίες με μια διαδικασία.
2. Το αποτέλεσμα της μεταγλώττισης είναι το εκτελέσιμο πρόγραμμα.
3. Η δομή επανάληψης Για .. ΑΠΟ… ΜΕΧΡΙ μπορεί να χρησιμοποιηθεί για να ελεγχθεί η εγκυρότητα κάποιας μεταβλητής.
4. Η LISP ανήκει στην κατηγορία των συναρτησιακών γλωσσών.
5. Οι βασικές λειτουργίες ενός υπολογιστή είναι μόνο η πρόσθεση, η σύγκριση και η μεταφορά δεδομένων.
Μονάδες 10
Α2. Να απαντήσετε στις παρακάτω ερωτήσεις
1. Να διακρίνετε και να αναπτύξετε τα προβλήματα ως προς το είδος λύσης.
Μονάδες 6
2. Να αναφέρετε τον ρόλο του οπτικού και του οδηγούμενου από το γεγονός προγραμματισμού.                                                                                              Μονάδες 6

Α3. Να μετατραπεί ο παρακάτω αλγόριθμος σε ισοδύναμο αλγόριθμο με την χρήση αποκλειστικά της δομής επανάληψης Όσο..επανάλαβε.
Αλγόριθμος Μετατροπή
Αρχή_επανάληψης
S ← 0
Για i από 10 μέχρι 1 με_βήμα -1
Διάβασε βαθμός
S ← S + βαθμός
Τέλος_επανάληψης
μο ← S/10
Mέχρις_ότου μο<9
Τέλος Μετατροπή
Μονάδες 8
Α4. Το παρακάτω σύνολο εντολών υπολογίζει το γινόμενο Γ, πενήντα (50) θετικών και ταυτόχρονα περιττών αριθμών και εμφανίζει στην οθόνη το τετράγωνο του Γ. Ωστόσο υπάρχουν αρκετά λάθη, τόσο συντακτικά όσο και λογικά.
1 Γ ← 0
2 Για κ από 1 μέχρι_και 50
3          Αρχή_επανάληψης
4                      Διάβασε Χ
5          Μέχρις_ότου (Χ <= 0) Ή (Χ mod 2 = 0)
6          Γ ← Γ*Χ
7 Τέλος_επανάληψης
8 Eμφάνισε Γ^2
1. Να γράψετε τον αριθμό κάθε γραμμής στην οποία εντοπίζετε λάθος, να το περιγράψετε και να το χαρακτηρίσετε ως συντακτικό ή λογικό.                                                          Μον. 5
2. Να ξαναγραφεί ο παραπάνω αλγόριθμος ώστε να λειτουργεί σωστά.                      Μον. 5

ΘΕΜΑ Β
Β.1 Να μετατρέψετε το παρακάτω διάγραμμα ροής σε ισοδύναμο αλγόριθμο.
Μονάδες 10

Β.2. Να γράψετε τι θα εμφανίζεται κατά την εκτέλεση του προγράμματος.
ΠΡΟΓΡΑΜΜΑ ΤΙΜΕΣ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: I, P, Α[3]
ΛΟΓΙΚΕΣ: Μ
ΑΡΧΗ
I ← 1, P ← 0
Α[1] ← 0, Α[2] ← 0, Α[3] ← 0
ΟΣΟ I<=3 ΕΠΑΝΑΛΑΒΕ
Α[I] ß 10 + I
ΑΝ ΣΥΝΑ(Α[I]) = ΑΛΗΘΗΣ ΤΟΤΕ
Μ ← ΑΛΗΘΗΣ
ΚΑΛΕΣΕ ΜΕΤ(Α, P, Μ)
ΑΛΛΙΩΣ
Μ ← ΨΕΥΔΗΣ
ΚΑΛΕΣΕ ΜΕΤ(Α, P, Μ)
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ Α[1], Α[2], Α[3]
I ← I + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ I
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΜΕΤ(Α, Κ, Λ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Κ, Α[3]
ΛΟΓΙΚΕΣ: Λ
ΑΡΧΗ
Κ ← Κ + 1
ΑΝ Λ = ΑΛΗΘΗΣ ΤΟΤΕ
Α[Κ] ← Α[Κ]*2
ΑΛΛΙΩΣ
            Α[Κ] ← Α[Κ] DIV 2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ ΣΥΝΑ(J): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: J
ΑΡΧΗ
ΑΝ J MOD 2=0 ΤΟΤΕ
ΣΥΝΑ ←  ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
ΣΥΝΑ ← ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Μονάδες 10
ΘΕΜΑ Γ
Ένας αγώνας πετοσφαίρισης (volley) παίζεται από δυο ομάδες. Νικήτρια χαρακτηρίζεται η ομάδα η οποία κερδίζει πρώτη τρία σετ. Κατά συνέπεια ένας
αγώνας volley μπορεί να χρειαστεί ως και πέντε σετ για να τελειώσει. Μία ομάδα κερδίζει ένα σετ όταν φτάσει πρώτη τους 25 πόντους - με εξαίρεση το 5ο σετ το οποίο ολοκληρώνεται στους 15 πόντους - με την προϋπόθεση βέβαια ότι έχει τουλάχιστον δύο πόντους παραπάνω από τον αντίπαλο της.

Για παράδειγμα αν το σκορ γίνει 24-24, τότε το σετ ολοκληρώνεται όταν μία από τις δύο ομάδες φτάσει τους 26 πόντους, ενώ αν το σκορ γίνει 25-25 το σετ ολοκληρώνεται όταν μία από τις δύο ομάδες φτάσει τους 27 πόντους κ.ο.κ.

Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ το οποίο
Γ1. θα περιλαμβάνει τμήμα δηλώσεων.                                         Μονάδες 2
Γ2. θα διαβάζει σε δύο μεταβλητές τα ονόματα των ομάδων.        Μονάδες 1
Γ3. Για κάθε ένα από τα σετ θα εκτελεί τα ακόλουθα:
1. Θα διαβάζει κάθε φορά το όνομα της ομάδας που κέρδισε πόντο. Δεν απαιτείται έλεγχος εγκυρότητας.
2. Υπολογίζει το νικητή του σετ, το οποίο ολοκληρώνεται με βάση τους
κανόνες που αναφέρθηκαν παραπάνω
3. Με την ολοκλήρωση του κάθε σετ θα καλεί ένα υποπρόγραμμα, που
καταγράφει το τελικό σκορ του κάθε σετ στον πίνακα ΣΚΟΡ[5,2] και το
οποίο περιγράφεται στο ερώτημα Γ5.                                   Μονάδες 7

Γ4. Θα εμφανίζει, στο τέλος του παιχνιδιού, το σκορ όλων των σετ που παίχτηκαν και την νικήτρια ομάδα, τυπώνοντας μήνυμα σύμφωνα με το παρακάτω παράδειγμα:
Ελληνική – Πανελληνική
Σετ 1: 15-25
Σετ 2: 25-22
Σετ 3: 20-25
Σετ 4: 21-25
ΝΙΚΗΤΡΙΑ ΟΜΑΔΑ : Πανελληνική                              Μονάδες 6

Γ5. Να κατασκευαστεί κατάλληλο υποπρόγραμμα το οποίο θα δέχεται ως παραμέτρους τον αριθμό του σετ, τους πόντους που πέτυχε στο συγκεκριμένο
σετ κάθε ομάδα και τον πίνακα ΣΚΟΡ[5,2]. Το υποπρόγραμμα θα ενημερώνει
τον πίνακα ΣΚΟΡ, καταχωρώντας στην 1η  στήλη τους πόντους που πέτυχε η
πρώτη ομάδα και στη 2η  στήλη τους πόντους που πέτυχε η δεύτερη ομάδα μεδεδομένο ότι κάθε γραμμή θα αντιπροσωπεύει τον αριθμό του σετ που μόλις τελείωσε (1η γραμμή – 1ο σετ, 2η γραμμή – 2ο  σετ, κ.ο.κ).
Μονάδες 4

ΘΕΜΑ Δ
Ένα λύκειο διοργανώνει εκλογές για την ανάδειξη του 15-μελούς συμβουλίου του. Οι μαθητές που θα ψηφίσουν είναι 200. Οι υποψήφιοι για το 15-μελές είναι 30 μαθητές, ενώ κάθε μαθητής μπορεί να ψηφίσει από κανένα μέχρι και 7 υποψηφίους. Στους υποψήφιους υπάρχουν μαθητές και από τις τρείς τάξεις του Λυκείου.

Να γραφεί αλγόριθμος ο οποίος:
Δ1. Θα διαβάζει στον πίνακα ΟΝ[30] τα ονόματα και στον πίνακα ΤΑΞΗ[30] την τάξη των 30 μαθητών που θέτουν υποψηφιότητα. Αν η τάξη που φοιτεί κάποιος υποψήφιος είναι η Α’ τότε θα καταχωρείται ο χαρακτήρας «Α», αν είναι η Β’ ο χαρακτήρας «Β» και αν είναι η Γ’ ο χαρακτήρας «Γ». Δεν χρειάζεται έλεγχος για την εγκυρότητα των τιμών.                             Μονάδες 1

Δ2. Δημιουργεί τον πίνακα ΑΠ[200,30] ο οποίος θα χρησιμοποιηθεί για την καταχώρηση των ψήφων του κάθε μαθητή στους 30 υποψηφίους τοποθετώντας αρχικά σε κάθε θέση του πίνακα ΑΠ[200,30] τον χαρακτήρα
΄΄-΄΄.                                                                                                              Μονάδες 2
Δ3. Για κάθε μαθητή που ψηφίζει, καταχωρεί τον χαρακτήρα “+” στον πίνακα
ΑΠ[200,30] που αντιστοιχεί στον υποψήφιο που ψηφίστηκε από τον μαθητή.
Η παραπάνω διαδικασία γίνεται ως εξής:
Ο αλγόριθμος διαβάζει στη μεταβλητή ΨΗΦΟΣ έναν αριθμό από το 1 ως το 30, που αντιπροσωπεύει την θέση του υποψήφιου που θέλει να ψηφίσει ο κάθε μαθητής και καταχωρεί στην αντίστοιχη θέση του πίνακα ΑΠ τον χαρακτήρα «+».

Για παράδειγμα, αν ο 6ος μαθητής εισάγει στη μεταβλητή ΨΗΦΟΣ την τιμή 13, θα καταχωρείται η τιμή “+” στο στοιχείο ΑΠ[6,13]. Στην περίπτωση που δοθεί ως είσοδος στη μεταβλητή ΨΗΦΟΣ η τιμή -1, θα τερματίζεται η ψηφοφορία του μαθητή. Να γίνεται έλεγχος εγκυρότητας τιμών. Θεωρείστε ότι δεν δίνει ο μαθητής δύο φορές τον ίδιο αριθμό.                                                       Μονάδες 3

Η ψηφοφορία για κάθε μαθητή ολοκληρώνεται όταν έχει ψηφίσει 7 υποψήφιους ή μόλις εισάγει ως αριθμό υποψηφίου στη μεταβλητή ΨΗΦΟΣ την τιμή –1                                                                                               Μονάδες 2

Δ4. Θα αποθηκεύει στον πίνακα ΑΘ[30] το σύνολο των ψήφων που πήρε ο κάθε υποψήφιος.                                                                                       Μονάδες 2

Δ5. Αν υποθέσουμε ότι στις 70 πρώτες γραμμές του πίνακα ΑΠ βρίσκονται μόνο ψήφοι μαθητών της Α’ τάξης Λυκείου θα εμφανίζει:
i) Πόσοι μαθητές της Α’ Λυκείου ψήφισαν τον πρώτο σε ψήφους μαθητή της Β’ Λυκείου. (Ένας μόνο μαθητής της Β Λυκείου συγκέντρωσε τους περισσότερους ψήφους)                                                                        Μονάδες 5
ii) Πόσοι μαθητές της Α’ Λυκείου ψήφισαν κάποιο μαθητή της Γ’ Λυκείου
Μονάδες 5