Zadanie 1

W pliku dane_6_1.txt znajduje się 100 słów. Słowa umieszczono w osobnych wierszach.

Fragment pliku dane_6_1.txt:

Linia 1. INTERPRETOWANIE. Linia 2. ROZWESELANIE. Linia 3. KONSERWOWANIE.

Napisz program, który zaszyfruje słowa z pliku dane_6_1.txt z użyciem klucza k = 3. Wynik zapisz do pliku dane_6_1.txt, każde słowo w osobnym wierszu, w porządku odpowiadającym kolejności słów z pliku z danymi.

Specyfikacja:

Dane:

  • n – liczba słów w pliku

  • wyrazy[n] – tablica zawierająca słowa znajdujące się w pliku

  • k – klucz

Wynik:

  • lista zaszyfrowanych słów

Poprawny wynik dla podanego fragmentu pliku:

Linia 1. IRTNNEPEOAITRWE. Linia 2. REAOWSLNEZEI. Linia 3. KEWEOSROAINWN.

Plik z danymi został przygotowany przez CKE i pojawił się egzaminie maturalnym z informatyki w maju 2016 roku (poziom rozszerzony, część II). Cały arkusz wraz z danymi można znaleźć na stronie internetowej Centralnej Komisji Egzaminacyjnej.

RxHO596nGOB3i

Przycisk do pobrania pliku TXT zawierający treść zadania.

Plik TXT o rozmiarze 1.29 KB w języku polskim

Przykładowe rozwiązanie

Dla każdego słowa tworzymy nową pustą tablicę dwuwymiarową plotek[][] o wysokości równej wartości klucza i szerokości równej długości rozpatrywanego wyrazu.

Tworzymy dwie zmienne pomocnicze dol oraz wiersz. Będą one pomagały w nawigacji  po tablicy plotek[][], tak aby kolejne litery tekstu jawnego utworzyły zygzak.

Jeżeli zmienna wiersz osiągnie wartość równą klucz - 1, oznaczać to będzie, że jest to ostatni wiersz tabeli. W takiej sytuacji kolejne litery będą umieszczane na coraz wyższych poziomach.

W przypadku, gdy zmienna wiersz osiągnie wartość 0, oznaczać to będzie, że jest to najwyższy wiersz tabeli. W takiej sytuacji kolejne litery będą umieszczane na coraz niższych poziomach.

Zmienna dol informuje, czy tekst będzie zapisywany do coraz niższych, czy coraz wyższych wierszy.

Na koniec zaszyfrowany tekst zostanie zapisany do zmiennej szyfrogram z pominięciem spacji i wyświetlony na ekranie.

Linia 1. n znak równości 100. Linia 2. dla i znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek n minus 1 wykonuj dwukropek. Linia 3. slowo znak równości wyrazy otwórz nawias kwadratowy i zamknij nawias kwadratowy. Linia 5. dla j znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek klucz minus 1 wykonuj dwukropek. Linia 6. dla l znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły słowo zamknij nawias okrągły minus 1 wykonuj dwukropek. Linia 7. plotek otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias kwadratowy l zamknij nawias kwadratowy znak równości apostrof apostrof. Linia 9. wiersz znak równości 0. Linia 10. dol znak równości 1. Linia 12. dla j znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły słowo zamknij nawias okrągły minus 1 wykonuj dwukropek. Linia 13. plotek otwórz nawias kwadratowy wiersz zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości slowo otwórz nawias kwadratowy j zamknij nawias kwadratowy. Linia 15. jeżeli wiersz znak równości znak równości klucz minus 1 wykonaj dwukropek. Linia 16. dol znak równości 0. Linia 17. w przeciwnym razie jeżeli wiersz znak równości znak równości 0 wykonaj dwukropek. Linia 18. dol znak równości 1. Linia 20. jeżeli dol znak równości znak równości 1 wykonaj dwukropek. Linia 21. wiersz znak równości wiersz minus 1. Linia 22. w przeciwnym razie wykonaj dwukropek. Linia 23. wiersz znak równości wiersz plus 1. Linia 25. dla j znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek klucz minus 1 wykonuj dwukropek. Linia 26. dla l znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły słowo zamknij nawias okrągły minus 1 wykonuj dwukropek. Linia 27. jeżeli plotek otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias kwadratowy l zamknij nawias kwadratowy wykrzyknik znak równości apostrof apostrof wykonaj dwukropek. Linia 28. szyfrogram znak równości szyfrogram plus plotek otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias kwadratowy l zamknij nawias kwadratowy. Linia 30. wypisz otwórz nawias okrągły szyfrogram zamknij nawias okrągły.
Polecenie 1

Rozwiąż zadanie samodzielnie w wybranym języku programowania.

Schemat punktowania

3 p. – za poprawny plik wynikowy.

2 p. – za pominięcie ostatniego wiersza.

1 p. – za plik z błędnym wykonaniem zawinięcia cyklicznego albo bez zawijania.

0 p. – za odpowiedź błędną albo za brak odpowiedzi.

Zadanie 2

Napisz program, który zaszyfruje łańcuch znaków zdanie szyfrem z kluczem o wartości k. Pamiętaj, aby wcześniej przygotować dane w taki sposób, aby wynikiem był szyfrogram złożony tylko i wyłącznie z wielkich liter alfabetu.

Przetestuj działanie programu dla łacińskiej sentencji Finis coronat opus i klucza o wartości 6.

Specyfikacja:

Dane:

  • zdanie – łańcuch znaków zawierający zdanie do zaszyfrowania

  • k – liczba naturalna; klucz

Wynik:

  • szyfrogram – łańcuch znaków zdanie zaszyfrowany szyfrem z kluczem o wartości k

Poprawny wynik dla podanych danych:

Linia 1. FNIOANRTIOSSCOUP.

Przykładowe rozwiązanie:

Przed przystąpieniem do szyfrowania odpowiednio przygotowujemy dane. Tworzymy pusty łańcuch znaków jawny, który będzie zawierał przekształcone dane wejściowe.

Jeżeli litera znajdująca się w zdanie[i] jest mała, to znaczy, że jej kod w tablicy ASCIItablica ASCIIASCII należy do przedziału <97, 122> (litery: 'a' - 'z'). W takim wypadku odejmujemy od wartości znaku różnicę odległości kodu litery 'a' (97) oraz 'A' (65) i dodajemy do ciągu znaków jawny.

Jeżeli litera znajdująca się w zdanie[i] jest wielka, to znaczy, że jej kod w tablicy ASCII należy do przedziału <65, 90> (litery: 'A' - 'Z'). W takim wypadku dodajemy znak do ciągu znaków jawny.

Szyfrowanie wygląda identycznie jak w poprzednim zadaniu.

Linia 1. jawny znak równości cudzysłów cudzysłów. Linia 2. dla i znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły zdanie zamknij nawias okrągły minus 1 wykonuj dwukropek. Linia 3. jeżeli zdanie otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości apostrof a apostrof ORAZ zdanie otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości apostrof z apostrof wykonaj dwukropek. Linia 4. jawny plus znak równości zdanie otwórz nawias kwadratowy i zamknij nawias kwadratowy minus otwórz nawias okrągły apostrof a apostrof minus apostrof A apostrof zamknij nawias okrągły. Linia 5. w przeciwnym razie jeżeli zdanie otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości apostrof A apostrof ORAZ zdanie otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości apostrof Z apostrof wykonaj dwukropek. Linia 6. jawny plus znak równości zdanie otwórz nawias kwadratowy i zamknij nawias kwadratowy. Linia 8. dla i znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek klucz minus 1 wykonuj dwukropek. Linia 9. dla j znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły jawny zamknij nawias okrągły minus 1 wykonuj dwukropek. Linia 10. plotek otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości apostrof apostrof. Linia 12. wiersz znak równości 0. Linia 13. dol znak równości 1. Linia 15. dla i znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły jawny zamknij nawias okrągły minus 1 wykonuj dwukropek. Linia 16. plotek otwórz nawias kwadratowy wiersz zamknij nawias kwadratowy otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości jawny otwórz nawias kwadratowy i zamknij nawias kwadratowy. Linia 18. jeżeli wiersz znak równości znak równości klucz minus 1 wykonaj dwukropek. Linia 19. dol znak równości 0. Linia 20. w przeciwnym razie wykonaj dwukropek. Linia 21. dol znak równości 1. Linia 23. jeżeli dol znak równości znak równości 1 wykonaj dwukropek. Linia 24. wiersz znak równości wiersz minus 1. Linia 25. w przeciwnym razie wykonaj dwukropek. Linia 26. wiersz znak równości wiersz plus 1. Linia 28. szyfrogram znak równości cudzysłów cudzysłów. Linia 29. dla i znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek klucz minus 1 wykonuj dwukropek. Linia 30. dla j znak równości 0 przecinek 1 przecinek 2 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły jawny zamknij nawias okrągły minus 1 wykonuj dwukropek. Linia 31. jeżeli plotek otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy wykrzyknik znak równości apostrof apostrof wykonaj dwukropek. Linia 32. szyfrogram znak równości szyfrogram plus plotek otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy. Linia 34. wypisz otwórz nawias okrągły szyfrogram zamknij nawias okrągły.
Polecenie 2

Rozwiąż zadanie samodzielnie w wybranym języku programowania.

Słownik

iteracja
iteracja

technika programowania, która polega na powtarzaniu tej samej operacji określoną liczbę razy lub do momentu, w którym zadany warunek zostanie spełniony

klucz
klucz

informacja, która jest wykorzystywana do szyfrowania  i/lub deszyfrowania wiadomości

klucz prywatny
klucz prywatny

tajny klucz wykorzystywany w procesie deszyfrowania w szyfrach asymetrycznych; powinien być znany jedynie adresatowi zaszyfrowanej wiadomości

klucz publiczny
klucz publiczny

udostępniony publicznie klucz wykorzystywany w procesie szyfrowania w szyfrach asymetrycznych

kryptografia
kryptografia

gałąź wiedzy o zapisywaniu informacji w sposób utrudniający, bądź całkowicie uniemożliwiający jej odczytanie

string
string

klasa języka C++, której obiekty służą do przechowywania ciągów znaków, takich jak całe zdania (np. „Ala ma kota”) albo pojedyncze wyrazy (np. „kot”)

szyfrogram
szyfrogram

zaszyfrowana wiadomość

szyfrowanie
szyfrowanie

przekształcanie tekstu jawnego w szyfrogram

tablica ASCII
tablica ASCII

7‑bitowy system kodowania znaków, w którym każdy z obsługiwanych symboli jest reprezentowany przez liczbę; 7 bitów umożliwia przechowanie informacji o znakach o kodach z zakresu 0‑127; używany m.in. we współczesnych komputerach oraz sieciach komputerowych

zmienna logiczna
zmienna logiczna

zmienna, która przyjmuje wartości 1 (true – prawda) lub 0 (false – fałsz)