Επιλογή Σελίδας

H κρυπτογράφηση χρησιμοποιείται για την προστασία των μεταδιδόμενων πληροφοριών. Ένας απλός αλγόριθμος κρυπτογράφησης χρησιμοποιεί την αντιστοίχιση κάθε γράμματος ενός κειμένου σε ένα άλλο γράμμα της αλφαβήτου.

Για το σκοπό αυτό δίνεται πίνακας ΑΒ[2,24], ο οποίος στην Πρώτη γραμμή του περιέχει σε αλφαβητική σειρά τους χαρακτήρες από το Α έως και το Ω. Στη δεύτερη γραμμή του βρίσκονται οι ίδιοι χαρακτήρες, αλλά με διαφορετική σειρά. Κάθε χαρακτήρας της πρώτης γραμμής κρυπτογραφείται στον αντίστοιχο χαρακτήρα της δεύτερης γραμμής, που βρίσκεται στην ίδια στήλη.

Επίσης, δίνεται πίνακας ΚΕΙΜ[500], ο οποίος περιέχει αποθηκευμένο με κεφαλαία ελληνικά γράμματα το προς κρυπτογράφηση κείμενο. Κάθε χαρακτήρας του κειμένου βρίσκεται σε ένα κελί του πίνακα ΚΕΙΜ[500]. Οι λέξεις του κειμένου χωρίζονται με έναν χαρακτήρα κενό (΄ ΄), ενώ στο τέλος του κειμένου μπορεί να υπάρχουν χαρακτήρες κενό (΄  ΄), μέχρι να συμπληρωθεί ο πίνακας.

Να αναπτύξετε αλγόριθμο ο οποίος:

Γ1. Να εμφανίζει το πλήθος των χαρακτήρων κενό (΄ ΄), που υπάρχουν μετά το τέλος του κειμένου στον πίνακα ΚΕΙΜ[500]. Αν δεν υπάρχει χαρακτήρας κενό μετά τον τελευταίο χαρακτήρα του μη κρυπτογραφημένου κειμένου, τότε να εμφανίζεται το μήνυμα: «Το μήκος του κειμένου είναι 500 χαρακτήρες».

Θεωρήστε ότι ο πίνακας ΚΕΙΜ[500] περιέχει τουλάχιστον μία λέξη.

Μονάδες 5

Γ2. Να κρυπτογραφεί τους χαρακτήρες του πίνακα ΚΕΙΜ[500] στον πίνακα ΚΡΥΠ[500], με βάση τον πίνακα ΑΒ[2,24]. Η κρυπτογράφηση να τερματίζεται με το τέλος του κειμένου. Δίνεται ότι κάθε χαρακτήρας κενό, που υπάρχει στον πίνακα ΚΕΙΜ[500], παραμένει χαρακτήρας κενό στον πίνακα ΚΡΥΠ[500].

Μονάδες 7

Γ3. Να εμφανίζει το πλήθος των λέξεων του κειμένου, καθώς και το πλήθος των χαρακτήρων που έχει η μεγαλύτερη λέξη του κειμένου στον πίνακα ΚΡΥΠ[500]. Θεωρήστε ότι η μεγαλύτερη λέξη είναι μοναδική.

Μονάδες 8

Τα θέματα σε pdf, 2012, Επαναληπτικές, Ημερήσια

ΛΥΣΗ

ΘΕΜΑ_Γ_2012_ΕΠΑΝ_ΗΜΕΡ [demo_δεδομένα]

ΠΡΟΓΡΑΜΜΑ  ΘΕΜΑ_Γ_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
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΡΑΨΕ 'Πλήθος χαρακτήρων μεγαλύτερης λέξης ', μέγιστο

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Share This