Λύσεις –Πανελλαδικές Εξετάσεις, Ημερήσια, 2017

ΘΕΜΑ Γ
Στο πλαίσιο ενός τοπικού σχολικού πρωταθλήματος βόλεϊ συμμετέχουν 5 σχολεία, αριθμημένα από το 1 έως το 5. Κάθε σχολείο παίζει μία φορά με όλα τα υπόλοιπα. Άρα θα πραγματοποιηθούν συνολικά 10 αγώνες. Νικητής ενός αγώνα είναι το σχολείο που έχει κερδίσει 3 σετ. Ο νικητής παίρνει 2 βαθμούς και ο ηττημένος 1 βαθμό.
Κάθε αγώνας προσδιορίζεται από τα σχολεία που παίζουν μεταξύ τους και το αποτέλεσμα του αγώνα σε σετ. Για παράδειγμα, η σειρά των στοιχείων: 4, 5, 1, 3 σημαίνει ότι το σχολείο 4 έπαιξε με το σχολείο 5 και έχασε τον αγώνα με 1 σετ υπέρ και 3 κατά. Αυτό αντίστοιχα σημαίνει ότι το σχολείο 5 κέρδισε τον αγώνα με το σχολείο 4 με 3 σετ υπέρ και 1 σετ κατά.
Τα δεδομένα των αγώνων αποθηκεύονται σε έναν δισδιάστατο πίνακα Α[5,3], όπου κάθε γραμμή αντιστοιχεί σε ένα σχολείο. Η τελική μορφή του πίνακα Α θα περιέχει για κάθε σχολείο, στην πρώτη (1η) στήλη τη βαθμολογία του (το άθροισμα των βαθμών του), στη δεύτερη (2η) το άθροισμα των σετ υπέρ και στην τρίτη (3η) το άθροισμα των σετ κατά, από όλους τους αγώνες.
Να κατασκευάσετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:
Γ1. α) Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων. (μονάδες 2)
β) Να διαβάζει τα ονόματα των 5 σχολείων και να τα καταχωρίζει στον πίνακα ΟΝ [5]. Η σειρά των σχολείων καθορίζει την αρίθμησή τους (1 έως 5). (μονάδες 2)
γ) Να αρχικοποιεί τον πίνακα Α[5,3]. (μονάδες 2)
Μονάδες 6
Γ2. Να διαβάζει για κάθε αγώνα τη σειρά των 4 στοιχείων που τον προσδιορίζουν και να ενημερώνει τον πίνακα Α και για τα δύο σχολεία όπως περιγράφεται παραπάνω.
Μονάδες 6
Γ3. Να κατατάσσει τα σχολεία σε φθίνουσα σειρά ανάλογα με τη βαθμολογία τους και σε περίπτωση ισοβαθμίας να προηγείται το σχολείο με τα περισσότερα σετ υπέρ.
Μονάδες 6
Γ4. Να εμφανίζει τα ονόματα των σχολείων, τη βαθμολογία τους, το άθροισμα των σετ υπέρ και το άθροισμα των σετ κατά, με βάση τη σειρά κατάταξής τους.
Μονάδες 2
Σημείωση: Θεωρείστε ότι δεν υπάρχει περίπτωση δύο σχολεία να έχουν και την ίδια βαθμολογία και τον ίδιο αριθμό σετ υπέρ.

ΛΥΣΗ

 ΠΡΟΓΡΑΜΜΑ ΜΑΙΟΣ_2017_ΘΕΜΑ_Γ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΑΠ[5, 3], Ι, J, Κ, TEMP, Ο1, Ο2, Σ1, Σ2
ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[5], TEMP2
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΔΙΑΒΑΣΕ ΟΝ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
ΑΠ[Ι, J] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΔΙΑΒΑΣΕ Ο1, Ο2, Σ1, Σ2
ΑΝ Σ1 > Σ2 ΤΟΤΕ
ΑΠ[Ο1, 1] <- ΑΠ[Ο1, 1] + 2
ΑΠ[Ο2, 1] <- ΑΠ[Ο2, 1] + 1
ΑΛΛΙΩΣ
ΑΠ[Ο1, 1] <- ΑΠ[Ο1, 1] + 1
ΑΠ[Ο2, 1] <- ΑΠ[Ο2, 1] + 2
ΤΕΛΟΣ_ΑΝ
ΑΠ[Ο1, 2] <- - ΑΠ[Ο1, 2] + Σ1
ΑΠ[Ο1, 3] <- ΑΠ[Ο1, 3] + Σ2
ΑΠ[Ο2, 2] <- ΑΠ[Ο2, 2] + Σ2
ΑΠ[Ο2, 3] <- ΑΠ[Ο2, 3] + Σ1

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

!Γ3 Α ΤΡΟΠΟΣ
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 5
ΓΙΑ J ΑΠΟ 20 ΜΕΧΡΙ Ι ΜΕ ΒΗΜΑ -1
ΑΝ ΑΠ[J - 1, 1] < ΑΠ[J, 1] ΤΟΤΕ ! ΦΘΙΝΟΥΣΑ ΤΑΞΙΝΟΜΗΣΗ
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 3
TEMP <- ΑΠ[J - 1, Κ]
ΑΠ[J - 1, Κ] <- ΑΠ[J, Κ]
ΑΠ[J, Κ] <- TEMP
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
TEMP2 <- ΟΝ[J - 1]
ΟΝ[J - 1] <- ΟΝ[J]
ΟΝ[J] <- TEMP2
ΑΛΛΙΩΣ_ΑΝ ΑΠ[J - 1, 1] = ΑΠ[J, 1] ΤΟΤΕ
ΑΝ ΑΠ[J - 1, 2] < ΑΠ[J, 2] ΤΟΤΕ !ΑΝ ΤΟ ΠΡΟΗΓΟΥΜΕΝΟ ΕΊΝΑΙ ΜΙΚΡΟΤΕΡΟ
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 3
TEMP <- ΑΠ[J - 1, Κ]
ΑΠ[J - 1, Κ] <- ΑΠ[J, Κ]
ΑΠ[J, Κ] <- TEMP
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
TEMP2 <- ΟΝ[J - 1]
ΟΝ[J - 1] <- ΟΝ[J]
ΟΝ[J] <- TEMP2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
ΓΡΑΨΕ ΑΠ[Ι, J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ</code class="language-javascript">
!Γ3 Β ΤΡΟΠΟΣ
! ΠΡΩΤΑ ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΒΑΣΗ ΤΑ ΚΕΡΔΙΣΜΕΝΑ ΣΕΤ
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 5
ΓΙΑ J ΑΠΟ 5 ΜΕΧΡΙ Ι ΜΕ ΒΗΜΑ -1
ΑΝ ΑΠ[J - 1, 2] < ΑΠ[J, 2] ΤΟΤΕ ! ΦΘΙΝΟΥΣΑ ΤΑΞΙΝΟΜΗΣΗ
! ΔΕΝ ΑΝΤΙΜΕΤΑΘΕΤΩ ΜΟΝΟ ΤΟ ΣΤΟΙΧΕΙΟ ΑΛΛΑ ΟΛΗ ΤΗΝ ΓΡΑΜΜΗ
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 3
TEMP <- ΑΠ[J - 1, Κ]
ΑΠ[J - 1, Κ] <- ΑΠ[J, Κ]
ΑΠ[J, Κ] <- TEMP
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
TEMP2 <- ΟΝ[J - 1]
ΟΝ[J - 1] <- ΟΝ[J]
ΟΝ[J] <- TEMP2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! ΜΕΤΑ ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΒΑΣΗ ΤΗΝ ΒΑΘΜΟΛΟΓΙΑ
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 5
ΓΙΑ J ΑΠΟ 5 ΜΕΧΡΙ Ι ΜΕ ΒΗΜΑ -1
ΑΝ ΑΠ[J - 1, 1] < ΑΠ[J, 1] ΤΟΤΕ ! ΦΘΙΝΟΥΣΑ ΤΑΞΙΝΟΜΗΣΗ
! ΔΕΝ ΑΝΤΙΜΕΤΑΘΕΤΩ ΜΟΝΟ ΤΟ ΣΤΟΙΧΕΙΟ ΑΛΛΑ ΟΛΗ ΤΗΝ ΓΡΑΜΜΗ
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 3
TEMP <- ΑΠ[J - 1, Κ]
ΑΠ[J - 1, Κ] <- ΑΠ[J, Κ]
ΑΠ[J, Κ] <- TEMP
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
TEMP2 <- ΟΝ[J - 1]
ΟΝ[J - 1] <- ΟΝ[J]
ΟΝ[J] <- TEMP2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
</code class="language-javascript">

ΘΕΜΑ Δ
Σε ένα σεμινάριο διάρκειας 6 μηνών, τηρούνται απουσίες ανά μήνα για κάθε συμμετέχοντα. Στο σεμινάριο συμμετέχουν 50 επιμορφούμενοι και ο καθένας έχει ένα μοναδικό αλφαριθμητικό κωδικό, που αποθηκεύεται στον πίνακα ΚΩΔ[50]. Οι απουσίες κάθε συμμετέχοντα ανά μήνα σεμιναρίου αποθηκεύονται σε δισδιάστατο πίνακα απουσιών ΑΠ[50,6]. Η γραμματεία τηρεί το σύνολο των απουσιών για τα δύο τρίμηνα του εξαμήνου σε πίνακα ΑΠΤΡ[50,2], όπου η πρώτη στήλη προσδιορίζει το πρώτο τρίμηνο και η δεύτερη το δεύτερο τρίμηνο για κάθε συμμετέχοντα.
Να κατασκευάσετε πρόγραμμα σε ΓΛΩΣΣΑ αποτελούμενο από υποπρογράμματα ως εξής:
Δ1. Διαδικασία ΕΙΣ, που διαβάζει τον κωδικό του κάθε επιμορφούμενου, τις απουσίες του ανά μήνα σεμιναρίου και ενημερώνει τον πίνακα ΚΩΔ και τον πίνακα ΑΠ κατάλληλα (θεωρείστε ότι τα δεδομένα εισάγονται σωστά). Μονάδες 2
Δ2. Συνάρτηση ΑΝΑΖ, που δέχεται τον κωδικό ενός επιμορφούμενου και τον πίνακα των κωδικών ΚΩΔ και επιστρέφει τον αριθμό της γραμμής που βρίσκεται ο κωδικός που αναζητείται. Αν ο κωδικός δεν βρεθεί, επιστρέφει 0. Μονάδες 4
Δ3. Συνάρτηση ΣΥΝΑΠ, που υπολογίζει το σύνολο απουσιών για έναν επιμορφούμενο σε ένα τρίμηνο. Η συνάρτηση δέχεται τον αριθμό της γραμμής που προσδιορίζει τον επιμορφούμενο στον πίνακα ΑΠ, τον πίνακα των απουσιών και τον αριθμό του πρώτου μήνα του τριμήνου (για παράδειγμα, 1 για το πρώτο τρίμηνο, 4 για το δεύτερο τρίμηνο) και επιστρέφει το σύνολο των απουσιών του τριμήνου.
Μονάδες 3
Δ4. Κύριο πρόγραμμα το οποίο:
α) περιέχει τμήμα δηλώσεων. (μονάδα 1)
β) καλεί τη διαδικασία ΕΙΣ για είσοδο δεδομένων. (μονάδα 1)
γ) για κάθε επιμορφούμενο υπολογίζει το σύνολο των απουσιών των δύο
τριμήνων καλώντας τη συνάρτηση ΣΥΝΑΠ και ενημερώνει τον πίνακα
ΑΠΤΡ. (μονάδες 3)
δ) διαβάζει επαναληπτικά έναν κωδικό. Για τον συγκεκριμένο κωδικό καλείται η συνάρτηση ΑΝΑΖ. Αν ο κωδικός αντιστοιχεί σε επιμορφούμενο, να εμφανίζει κατάλληλο μήνυμα δυνατότητας ή μη συμμετοχής του στις εξετάσεις. Στις εξετάσεις δικαιούνται συμμετοχής οι επιμορφούμενοι που έχουν λιγότερες από 10 απουσίες σε καθένα από τα δύο τρίμηνα. Αν ο κωδικός δεν βρεθεί, εμφανίζει μήνυμα «ΔΕΝ ΒΡΕΘΗΚΕ Ο ΚΩΔΙΚΟΣ». Η διαδικασία επαναλαμβάνεται μέχρι να δοθεί ως κωδικός η λέξη ΤΕΛΟΣ. (μονάδες 6)
Μονάδες 11

ΛΥΣΗ

ΠΡΟΓΡΑΜΜΑ ΜΑΙΟΣ_2017_ΘΕΜΑ_Δ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΑΠ[50, 6], ΑΠΤΡ[50, 2], Ι, J, Κ, ΜΗΝΑΣ, ΓΡΑΜΜΗ
ΧΑΡΑΚΤΗΡΕΣ: ΚΩΔ[50], ΚΩΔΙΚΟΣ
ΛΟΓΙΚΕΣ: ΚΑΤΩ10
ΑΡΧΗ
! Δ4
ΚΑΛΕΣΕ ΕΙΣ(ΚΩΔ, ΑΠ)
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 2
ΑΝ J = 1 ΤΟΤΕ
ΜΗΝΑΣ <- 1
ΑΛΛΙΩΣ
ΜΗΝΑΣ <- 4
ΤΕΛΟΣ_ΑΝ
ΑΠ[Ι, J] <- ΣΥΝΑΠ(Ι, ΑΠ, ΜΗΝΑΣ)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! ΔΙΑΒΑΣΜΑ ΕΞΩ ΑΠΟ ΤΗΝ ΕΠΑΝΑΛΗΨΗ
ΔΙΑΒΑΣΕ ΚΩΔΙΚΟΣ
ΟΣΟ ΚΩΔΙΚΟΣ <> 'ΤΕΛΟΣ' ΕΠΑΝΑΛΑΒΕ ! ΤΙΜΗ ΦΡΟΥΡΟΣ
ΚΑΤΩ10 <- ΑΛΗΘΗΣ
ΓΡΑΜΜΗ <- ΑΝΑΖ(ΚΩΔ, ΚΩΔΙΚΟΣ)
ΑΝ ΓΡΑΜΜΗ <> 0 ΤΟΤΕ
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 2
ΑΝ ΑΠ[ΓΡΑΜΜΗ, Κ] > 10 ΤΟΤΕ
ΚΑΤΩ10 <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΚΑΤΩ10 = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'ΜΠΟΡΕΙ ΝΑ ΣΥΜΜΕΤΕΧΕΙ ΣΤΙΣ ΕΞΕΤΑΣΕΙΣ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΔΕΝ ΜΠΟΡΕΙ ΝΑ ΣΥΜΜΕΤΕΧΕΙ ΣΤΙΣ ΕΞΕΤΑΣΕΙΣ'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ ! ΕΠΙΣΤΡΕΦΕΙ Η ΑΝΑΖ Ο (ΔΕΝ ΥΠΑΡΧΕΙ Ο ΚΩΔΙΚΟΣ)
ΓΡΑΨΕ 'ΔΕ ΒΡΕΘΗΚΕ Ο ΚΩΔΙΚΟΣ'
ΤΕΛΟΣ_ΑΝ

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

!Δ1
ΔΙΑΔΙΚΑΣΙΑ ΕΙΣ(ΚΩΔ, ΑΠ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΑΠ[50, 6], Ι, J
ΧΑΡΑΚΤΗΡΕΣ: ΚΩΔ[50]
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ ΚΩΔ[Ι]
ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 6
ΔΙΑΒΑΣΕ ΑΠ[Ι, J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

! Δ2
ΣΥΝΑΡΤΗΣΗ ΑΝΑΖ(ΚΩΔ, ΚΩΔΙΚΟΣ): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΑΠΟΤ, Ι
ΧΑΡΑΚΤΗΡΕΣ: ΚΩΔΙΚΟΣ, ΚΩΔ[50]
ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
ΑΡΧΗ
Ι <- 1
ΑΠΟΤ <- 0
ΟΣΟ Ι <= 50 ΚΑΙ ΑΠΟΤ = 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ ΚΩΔΙΚΟΣ = ΚΩΔ[Ι] ΤΟΤΕ
ΒΡΕΘΗΚΕ <- ΑΛΗΘΗΣ
ΑΠΟΤ <- Ι
ΑΛΛΙΩΣ
Ι <- Ι + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝΑΖ <- ΑΠΟΤ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

! Δ3
ΣΥΝΑΡΤΗΣΗ ΣΥΝΑΠ(ΓΡΑΜΜΗ, ΑΠ, ΜΗΝΑΣ): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΓΡΑΜΜΗ, ΑΠ[50, 6], J, ΜΗΝΑΣ, SUM
ΑΡΧΗ
SUM <- 0
ΓΙΑ J ΑΠΟ ΜΗΝΑΣ ΜΕΧΡΙ ΜΗΝΑΣ + 2
SUM <- SUM + ΑΠ[ΓΡΑΜΜΗ, J]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΣΥΝΑΠ <- SUM
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ</code class="language-javascript">