ΘΕΜΑ Δ
Σε ένα σεμινάριο διάρκειας 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">
Πρόσφατα σχόλια