Napisać procedurę, która mając zadane jako parametry „klucze deszyfracji” – czyta z klawiatury teksty wiersze zaszyfrowanego



Pobieranie 8,62 Kb.
Data03.07.2018
Rozmiar8,62 Kb.

Deszyfracja





  1. Napisać procedurę, która mając zadane jako parametry „klucze deszyfracji” – czyta z klawiatury teksty (wiersze zaszyfrowanego komunikatu), dokonuje ich deszyfracji i wyświetla na ekranie tekst rozszyfrowany.

Niech dane będą następujące definicje:

CONST

MaxDl=... (*maksymalna ilość pozycji w tablicy zawierającej klucze deszyfracji*)



TYPE

_Ind=1..MaxDl;

_TabPoz=Array[­_Ind] of Byte;

_Key=String;


Nagłówek procedury:

PROCEDURE Rozszyfruj (D1K1Red:_Ind;

VAR TabK1Red:_TabPoz; D1K1Wyb:_Ind;

VAR TabK1Wyb:_TabPoz; VAR K1Wym:_Key);


Procedura cyklicznie czyta z klawiatury kolejny wiersz zaszyfrowanego tekstu źródłowego (jego koniec zaznaczony jest jako wiersz pusty, tj. zawierający tylko znak końca wiersza) i natychmiast deszyfrując go, konstruuje z pojedynczych znaków tekst wynikowy. Gdy wiersz tekstu wynikowego osiągnie długość 75 znaków, zostaje on wyświetlony na ekranie jako kolejny fragment wiadomości zdeszyfrowanej, a z dalszych znaków wynikowych buduje się następny wiersz tej wiadomości; po napotkaniu kończącego zaszyfrowany tekst wiersza pustego, ostatni wiersz wynikowy wyprowadza się na ekran nawet, gdy nie osiągnie długości 75 znaków (chyba ze nie zawiera on jeszcze żadnego znaku).
Deszyfracja wiersza tekstu źródłowego przebiega w następujących krokach:

REDUKCJA: Z wiersza tekstu źródłowego usuwa się znaki, znajdujące się przed rozpoczęciem redukcji) na pozycjach o numerach, znajdujących się w tablicy TabK1Red - klucz redukcji (oczywiście numery większe od długości wiersza nie są rozpatrywane).

WYBÓR: Ze znaków, znajdujących się w tekście zredukowanym na (nowych, tj. po redukcji) pozycjach o numerach znajdujących się w tablicy TabK1Wyb – klucz wyboru (i oczywiście – nie większych niż długość tekstu zredukowanego), buduje się („skleja”) tekst stanowiący podstawę do następnego, trzeciego kroku.

WYMIANA: W otrzymanym w kroku wyboru tekście wyszukuje się ciągi znaków złożone z samych cyfr (np. w tekście 34jhj678jjjjj89hjj są 3 takie ciągi, rozdzielone znakami niecyfrowanymi). Każdy taki ciąg przekształca się na liczbę naturalną – „numer pozycji”, zaś w łańcuchu K1Wym – klucz wymiany - wyszukuje się znak, stojący na pozycji o tym numerze; jeśli liczba jest zerem, za znak przyjmuje się odstęp; a jeśli liczba jest większa od długości łańcucha K1Wym, bierze się zamiast niej jej resztę z dzielenia przez tę długość, powiększoną o 1. Wybrany w ten sposób znak jest kolejnym znakiem wynikowej wiadomości (dopisuje się go do niej aż do osiągnięcia pełnej 75-znakowej długości wiersza, po czym jest on, jak opisano wyżej, wyświetlany na ekranie itd.).
Przed przystąpieniem do „poważnego” implementowania poszczególnych operacji należy przedstawić swoją propozycję definicji typów do przechowywania potrzebnych informacji.


  1. Napisać program umożliwiający wykorzystanie wszystkich operacji (np. menu w wyborem opcji).




©operacji.org 2017
wyślij wiadomość

    Strona główna