ΘΕΜΑ Γ
H κρυπτογράφηση χρησιμοποιείται για την προστασία των μεταδιδόμενων πληροφοριών. Ένας απλός αλγόριθμος κρυπτογράφησης χρησιμοποιεί την αντιστοίχιση κάθε γράμματος ενός κειμένου σε ένα άλλο γράμμα της αλφαβήτου.
Για το σκοπό αυτό δίνεται πίνακας ΑΒ[2,24], ο οποίος στην Πρώτη γραμμή του περιέχει σε αλφαβητική σειρά τους χαρακτήρες από το Α έως και το Ω. Στη δεύτερη γραμμή του βρίσκονται οι ίδιοι χαρακτήρες, αλλά με διαφορετική σειρά. Κάθε χαρακτήρας της πρώτης γραμμής κρυπτογραφείται στον αντίστοιχο χαρακτήρα της δεύτερης γραμμής, που βρίσκεται στην ίδια στήλη.
Επίσης, δίνεται πίνακας ΚΕΙΜ[500], ο οποίος περιέχει αποθηκευμένο με κεφαλαία ελληνικά γράμματα το προς κρυπτογράφηση κείμενο. Κάθε χαρακτήρας του κειμένου βρίσκεται σε ένα κελί του πίνακα ΚΕΙΜ[500]. Οι λέξεις του κειμένου χωρίζονται με έναν χαρακτήρα κενό (΄ ΄), ενώ στο τέλος του κειμένου μπορεί να υπάρχουν χαρακτήρες κενό (΄ ΄), μέχρι να συμπληρωθεί ο πίνακας.
Να αναπτύξετε αλγόριθμο ο οποίος:
Γ1. Να εμφανίζει το πλήθος των χαρακτήρων κενό (΄ ΄), που υπάρχουν μετά το τέλος του κειμένου στον πίνακα ΚΕΙΜ[500]. Αν δεν υπάρχει χαρακτήρας κενό μετά τον τελευταίο χαρακτήρα του μη κρυπτογραφημένου κειμένου, τότε να εμφανίζεται το μήνυμα: «Το μήκος του κειμένου είναι 500 χαρακτήρες».
Θεωρήστε ότι ο πίνακας ΚΕΙΜ[500] περιέχει τουλάχιστον μία λέξη.
Μονάδες 5
Γ2. Να κρυπτογραφεί τους χαρακτήρες του πίνακα ΚΕΙΜ[500] στον πίνακα ΚΡΥΠ[500], με βάση τον πίνακα ΑΒ[2,24]. Η κρυπτογράφηση να τερματίζεται με το τέλος του κειμένου. Δίνεται ότι κάθε χαρακτήρας κενό, που υπάρχει στον πίνακα ΚΕΙΜ[500], παραμένει χαρακτήρας κενό στον πίνακα ΚΡΥΠ[500].
Μονάδες 7
Γ3. Να εμφανίζει το πλήθος των λέξεων του κειμένου, καθώς και το πλήθος των χαρακτήρων που έχει η μεγαλύτερη λέξη του κειμένου στον πίνακα ΚΡΥΠ[500]. Θεωρήστε ότι η μεγαλύτερη λέξη είναι μοναδική.
Μονάδες 8
ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ_2012_ΕΠΑΝ_ΗΜΕΡ ΣΤΑΘΕΡΕΣ ΠΛΑΤΟΣ = 50 ! Για τα demo δεδομένα, 500 για την άσκηση ΚΕΝΟ = '!' ! Για τα demo δεδομένα, ' ' για την άσκηση ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: κενά , i, j, k, λέξεις, μέγιστο, πλήθος ΧΑΡΑΚΤΗΡΕΣ: ΚΕΙΜ[ΠΛΑΤΟΣ], ΑΒ[2,24], ΚΡΥΠ[ΠΛΑΤΟΣ] ΛΟΓΙΚΕΣ: βρέθηκε ΑΡΧΗ ! Πίνακας Κρύπτο ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 2 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 24 ΔΙΑΒΑΣΕ ΑΒ[i, j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Εισαγωγή Κειμένου ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΛΑΤΟΣ ΔΙΑΒΑΣΕ ΚΕΙΜ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Γ1 κενα <-- 0 i <-- 1 ΟΣΟ i <= ΠΛΑΤΟΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΚΕΙΜ[i] <> ΚΕΝΟ ΤΟΤΕ κενά <-- 0 ΑΛΛΙΩΣ κενά <-- κενά + 1 ΤΕΛΟΣ_ΑΝ i <-- i + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ κενά <> 0 ΤΟΤΕ ΓΡΑΨΕ 'Κενά μετά το τέλος του κειμένου :', κενά ΑΛΛΙΩΣ ΓΡΑΨΕ 'Το μήκου του κειμένου είναι 500 χαρακτήρες' ΤΕΛΟΣ_ΑΝ ! Γ2 ! Κρυπτογράφηση ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΛΑΤΟΣ ΑΝ ΚΕΙΜ[i]<>ΚΕΝΟ ΤΟΤΕ !Αναζήτηση στον ΑΒ βρέθηκε <-- ΨΕΥΔΗΣ k <-- 1 ΟΣΟ k <= 24 ΚΑΙ βρέθηκε = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΚΕΙΜ[i]=ΑΒ[1,k] ΤΟΤΕ ΚΡΥΠ[i] <-- ΑΒ[2,k] βρέθηκε <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ k <-- k + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΛΛΙΩΣ ΚΡΥΠ[i] <-- ΚΕΙΜ[i] ! Ο χαρακτήρας κενό παραμένει ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Γ3 ! υπολογισμός πλήθους λέξεων λέξεις <-- 1 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ (ΠΛΑΤΟΣ-(κενά)) ΑΝ ΚΕΙΜ[i]='!' ΤΟΤΕ λέξεις <-- λέξεις + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Πλήθος λέξεων ', λέξεις ! υπολογισμός πλήθους χαρακτήρων μεγαλύτερης λέξης μέγιστο <-- 0 πλήθος <-- 0 ! χαρακτήρων τρέχουσας λέξης ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΠΛΑΤΟΣ ΑΝ ΚΕΙΜ[i] <> ΚΕΝΟ ΤΟΤΕ πλήθος <-- πλήθος + 1 ΑΛΛΙΩΣ ΑΝ μέγιστο < πλήθος ΤΟΤΕ μέγιστο <-- πλήθος ΤΕΛΟΣ_ΑΝ πλήθος <-- 0 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Πλήθος χαρακτήρων μεγαλύτερης λέξης ', μέγιστο ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΘΕΜΑ Δ
Εταιρεία που ασχολείται με μετρήσεις τηλεθέασης καταγράφει στοιχεία, ανά ημέρα και για χρονικό διάστημα μίας εβδομάδας, τα οποία αφορού την τηλεθέαση των κεντρικών δελτίων ειδήσεων που προβάλλονται από πέντε (5) τηλεοπτικούς σταθμούς.
Για τη διευκόλυνση της στατιστικής επεξεργασίας των δεδομένων να αναπτύξετε πρόγραμμα το οποίο:
Δ1. Να περιλαμβάνει τμήμα δηλώσεων.
Μονάδες 2
Δ2. Για κάθε έναν από τους τηλεοπτικούς σταθμούς να δέχεται το όνομά του και το πλήθος των τηλεθεατών που παρακολούθησαν το κεντρικό δελτίο ειδήσεων κάθε μέρα της εβδομάδας, από Δευτέρα έως και Κυριακή. Να μη γίνει έλεγχος εγκυρότητας.
Μονάδες 4
Δ3. Να καλεί για κάθε έναν από τους τηλεοπτικούς σταθμούς κατάλληλο υποπρόγραμμα, το οποίο να υπολογίζει και να επιστρέφει το μέσο πλήθος τηλεθεατών, που παρακολούθησαν το κεντρικό δελτίο ειδήσεών του, τη συγκεκριμένη εβδομάδα. Να αναπτύξετε το κατάλληλο υποπρόγραμμα.
Μονάδες 4
Δ4. Να εμφανίζει τα ονόματα των σταθμών για τους οποίους ο μέσος όρος τηλεθέασης του Σαββατοκύριακου (2 ημέρες) ήταν τουλάχιστον 10% μεγαλύτερος από το μέσο όρο τηλεθέασης στις καθημερινές (Δευτέρα έως και Παρασκευή).
Μονάδες 5
Δ5. Να εμφανίζει τα ονόματα των τηλεοπτικών σταθμών, οι οποίοι κάθε ημέρα, από Δευτέρα έως και Κυριακή, παρουσιάζουν συνεχώς, από ημέρα σε ημέρα, αύξηση τηλεθέασης. Αν δεν υπάρχουν τέτοιοι σταθμοί, να εμφανίζει το μήνυμα: «Κανένας σταθμός δεν είχε συνεχή αύξηση τηλεθέασης».
Μονάδες 5
ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Δ_2012_ΕΠΑΝ_ΗΜΕΡ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, j, ΤΗΛ[7,5], S5, S2 ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ[5], ΜΟ5, ΜΟ2 ΛΟΓΙΚΕΣ: βρέθηκε, Αύξηση_τηλεθέασης ΑΡΧΗ ! Δ2 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 7 ΓΡΑΨΕ 'ΗΜΕΡΑ ', i ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ 'ΤΗΛΕΘΕΑΤΕΣ ΣΤΑΘΜΟΥ ', j ΔΙΑΒΑΣΕ ΤΗΛ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ3 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5 ΜΟ[j] <-- MΟ_τηλεθ_εβδομάδας(ΤΗΛ, j) ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ4 ΓΡΑΨΕ 'ΣΤΑΘΜΟΙ ΜΕ 10% ΠΕΡΙΣΣΟΤΕΡΗ ΤΗΛΕΘΕΑΣΗ ΤΟ ΣΚ:' ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5 ! MO Καθημερινών S5 <-- 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 S5 <-- S5 + ΤΗΛ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ5 <-- S5 / 5 ! MO Σαββάτου Κυριακής S2 <-- 0 ΓΙΑ i ΑΠΟ 6 ΜΕΧΡΙ 7 S2 <-- S2 + ΤΗΛ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ2 <-- S2 / 2 ΑΝ ΜΟ2 >= 1.1 * ΜΟ5 ΤΟΤΕ ! 10% μεγαλύτερο του ΜΟ5 (1 + 10/100) ΓΡΑΨΕ 'ΣΤΑΘΜΟΣ ', j ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Δ5 βρέθηκε <-- ΨΕΥΔΗΣ ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5 Αύξηση_τηλεθέασης <-- ΑΛΗΘΗΣ i <-- 1 ΟΣΟ i<=6 ΚΑΙ Αύξηση_τηλεθέασης=ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ ΤΗΛ[i+1,j] > ΤΗΛ[i,j] ΤΟΤΕ i <-- i + 1 ΑΛΛΙΩΣ Αύξηση_τηλεθέασης <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ Αύξηση_τηλεθέασης=ΑΛΗΘΗΣ ΤΟΤΕ ΓΡΑΨΕ 'ΣΤΑΘΜΟΣ ΜΕ ΣΥΝΕΧΗ ΑΥΞΗΣΗ ΤΗΛΕΘΕΑΣΗΣ ', j ΑΝ βρεθηκε = ΨΕΥΔΗΣ ΤΟΤΕ βρέθηκε <-- ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ βρεθηκε = ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ 'Κανένας σταθμός δεν είχε συνεχή αύξηση τηλεθέασης' ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ MΟ_τηλεθ_εβδομάδας(τηλεθέαση, σταθμός): ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: τηλεθέαση[7,5], j, S, μέρα, σταθμός ΑΡΧΗ S <-- 0 ΓΙΑ μέρα ΑΠΟ 1 ΜΕΧΡΙ 7 S <-- S + τηλεθέαση[μέρα, σταθμός] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ MΟ_Τηλεθ_εβδομάδας <-- S / 7 ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ