e-ΜΑΘΗΜΑΤΑ |
Λύσεις ασκήσεων από θέματα Πανελλαδικών εξετάσεων |
Αλγόριθμος κρυπτογράφηση
!Ε2012-Γ
! H κρυπτογράφηση χρησιμοποιείται για την προστασία των μεταδιδομένων πληροφοριών.
! Ένας απλός αλγόριθμος κρυπτογράφησης χρησιμοποιεί την αντιστοίχιση κάθε γράμματος
! ενός κειμένου σε ένα άλλο γράμμα της αλφαβήτου.
!
! Για το σκοπό αυτό δίνεται πίνακας ΑΒ[2,24], ο οποίος στην πρώτη γραμμή του περιέχει σε
! αλφαβητική σειρά τους χαρακτήρες από το Α έως και το Ω.
! Στη δεύτερη γραμμή του βρίσκονται οι ίδιοι χαρακτήρες, αλλά με διαφορετική σειρά.
! Κάθε χαρακτήρας της πρώτης γραμμής κρυπτογραφείται στον αντίστοιχο χαρακτήρα
! της δεύτερης γραμμής, που βρίσκεται στην ίδια στήλη.
!
! Επίσης, δίνεται πίνακας ΚΕΙΜ[500], ο οποίος περιέχει αποθηκευμένο με κεφαλαία
! ελληνικά γράμματα το προς κρυπτογράφηση κείμενο.
! Κάθε χαρακτήρας του κειμένου βρίσκεται σε ένα κελί του πίνακα ΚΕΙΜ[500].
! Οι λέξεις του κειμένου χωρίζονται με έναν χαρακτήρα κενό (΄ ΄),
! ενώ στο τέλος του κειμένου μπορεί να υπάρχουν χαρακτήρες κενό (΄ ΄),
! μέχρι να συμπληρωθεί ο πίνακας.
!
! Να αναπτύξετε αλγόριθμο ο οποίος:
! Γ1. Να εμφανίζει το πλήθος των χαρακτήρων κενό (΄ ΄), που υπάρχουν μετά το
! τέλος του κειμένου στον πίνακα ΚΕΙΜ[500]. Αν δεν υπάρχει χαρακτήρας κενό
! μετά τον τελευταίο χαρακτήρα του μη κρυπτογραφημένου κειμένου,
! τότε να εμφανίζεται το μήνυμα: «Το μήκος του κειμένου είναι 500 χαρακτήρες».
! Θεωρήστε ότι ο πίνακας ΚΕΙΜ[500] περιέχει τουλάχιστον μία λέξη.
! Γ2. Να κρυπτογραφεί τους χαρακτήρες του πίνακα ΚΕΙΜ[500] στον πίνακα ΚΡΥΠ[500],
! με βάση τον πίνακα ΑΒ[2,24]. Η κρυπτογράφηση να τερματίζεται με το τέλος του κειμένου.
! Δίνεται ότι κάθε χαρακτήρας κενό, που υπάρχει στον πίνακα ΚΕΙΜ[500],
! παραμένει χαρακτήρας κενό στον πίνακα ΚΡΥΠ[500].
! Γ3. Να εμφανίζει το πλήθος των λέξεων του κειμένου, καθώς και το πλήθος
! των χαρακτήρων που έχει η μεγαλύτερη λέξη του κειμένου στον πίνακα ΚΡΥΠ[500].
! Θεωρήστε ότι η μεγαλύτερη λέξη είναι μοναδική.
Δεδομένα // ΑΒ, ΚΕΙΜ //
Ν <- 500
! Γ1
i <- Ν
πλήθος_κενών_τέλους <- 0
Όσο (ΚΕΙΜ[i] = " ") και (i > 0) επανάλαβε
i <- i - 1
πλήθος_κενών_τέλους <- πλήθος_κενών_τέλους + 1
Τέλος_επανάληψης
Αν πλήθος_κενών_τέλους = 0 τότε
Εμφάνισε "Το μήκος του κειμένου είναι 500 χαρακτήρες"
αλλιώς
Εμφάνισε "Πλήθος των κενών χαρακτήρων στο τέλος του κειμένου ", πλήθος_κενών_τέλους
Τέλος_αν
! Γ2
Για i από 1 μέχρι Ν
ΚΡΥΠ[i] <- " "
Τέλος_επανάληψης
Για i από 1 μέχρι Ν - πλήθος_κενών_τέλους
Αν ΚΕΙΜ[i] = " " τότε
ΚΡΥΠ[i] <- " "
αλλιώς
j <- 1
βρέθηκε <- Ψευδής
Όσο βρέθηκε = Ψευδής και j ≤ 24 επανάλαβε
Αν ΚΕΙΜ[i] = ΑΒ[1, j] τότε
ΚΡΥΠ[i] <- ΑΒ[2, j]
βρέθηκε <- Αληθής
Τέλος_αν
j <- j + 1
Τέλος_επανάληψης
Αν βρέθηκε = Ψευδής τότε
! " " ή κάποιος χαρακτήρας όχι κωδικοποιημένος
ΚΡΥΠ[i] <- ΚΕΙΜ[i]
Τέλος_αν
Τέλος_αν
Τέλος_επανάληψης
! Γ3. Να εμφανίζει το πλήθος των λέξεων του κειμένου, καθώς και το πλήθος
! των χαρακτήρων που έχει η μεγαλύτερη λέξη του κειμένου στον πίνακα ΚΡΥΠ[500].
! Θεωρήστε ότι η μεγαλύτερη λέξη είναι μοναδική.
! Οι λέξεις του κειμένου χωρίζονται με έναν χαρακτήρα κενό (΄ ΄),
πλήθος_λέξεων <- 0
i <- 0
μήκος_λέξης <- 0
μέγιστο_μήκος <- 0
Όσο i < Ν - πλήθος_κενών_τέλους επανάλαβε
i <- i + 1
Αν (ΚΕΙΜ[i] = " ") ή (i = Ν - πλήθος_κενών_τέλους) τότε
! Σε κάθε κενό (εκτός αν είναι στην αρχή) αρχίζει νέα λέξη
Αν μήκος_λέξης > 0 τότε
πλήθος_λέξεων <- πλήθος_λέξεων + 1
Τέλος_αν
! Αν τέλος κειμένου
Αν (i = Ν - πλήθος_κενών_τέλους) τότε
μήκος_λέξης <- μήκος_λέξης + 1
Τέλος_αν
! Έλεγχος μέγιστης λέξης
Αν μήκος_λέξης > μέγιστο_μήκος τότε
μέγιστο_μήκος <- μήκος_λέξης
Τέλος_αν
μήκος_λέξης <- 0
αλλιώς
μήκος_λέξης <- μήκος_λέξης + 1
Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Πλήθος των λέξεων του κειμένου : ", πλήθος_λέξεων
Εμφάνισε "Πλήθος χαρακτήρων μεγαλύτερης λέξης : ", μέγιστο_μήκος
Τέλος κρυπτογράφηση
|