Matura 2017 (maj). Zadanie 1. Szyfrowanie
Dany jest algorytm szyfrujący tekst jawny s o następującej specyfikacji:
Dane:
d – długość tekstu do zaszyfrowania, d > 1
s[1..d] – tekst jawny, ciąg znaków o długości d
k – liczba całkowita dodatnia taka, że k < d
n – liczba całkowita dodatnia taka, że n < d
Wynik:
szyfr [1..d] – zaszyfrowany tekst s
Algorytm:
od j=1 do d szyfr[j] ← s[j] i ← 1 dopóki i ≤ d – k szyfr[i] ↔ szyfr[i+k] i ← i+n
Operacja szyfr[a] ↔ szyfr[b] oznacza zamianę w ciągu szyfr znaku z pozycji a na znak z pozycji b – i na odwrót.
Zadanie 1.
Uzupełnij tabelę – wpisz zaszyfrowany tekst, który otrzymasz w wyniku wykonania algorytmu.
| s | d | k | n | szyfr |
| ataknadranem | 12 | 4 | 2 | ntdkaaeranam |
| maturazinformatyki | 18 | 3 | 5 | uatmrnziafarmotyki |
| stokrotka | 9 | 1 | 2 | tskoorkta |
Rozwiązanie:
Kod w języku programowania c++:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char tekst[]="stokrotka";
int d=strlen(tekst);
cout << d << endl;
char szyfr[d];
int k=1, n=2;
cout << "Tekst jawny: " << tekst << endl;
for (int j=0; j<d; j++)
szyfr[j]=tekst[j];
int i=0;
while(i<=d-k-1){
swap(szyfr[i],szyfr[i+k]);
i+=n;
}
cout << "Tekst szyfowany: " ;
for (int j=0; j<d; j++)
cout << szyfr[j];
return 0;
}
Zadanie 2.
W kolumnie szyfr zapisano zaszyfrowany tekst s. Odszyfruj tekst i zapisz go w kolumnie s.
| szyfr | d | k | n | s |
| eiindaezotinwezssyktpo | 22 | 2 | 2 | pieniadzetoniewszystko |

Algorytm:
od j=1 do d szyfr[j] ← s[j] i ← d-n dopóki i > 0 szyfr[i] ↔ szyfr[i-k] i ← i-n
Kod w języku programowania c++:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char tekst[]="eiindaezotinwezssyktpo";
int d=strlen(tekst);
cout << d << endl;
char szyfr[d];
int k=2, n=2;
cout << "Tekst szyfowany: " << tekst << endl;
for (int j=0; j<d; j++)
szyfr[j]=tekst[j];
int i=d-n;
while(i>0){
swap(szyfr[i],szyfr[i-k]);
i-=n;
}
cout << "Tekst jawny: " ;
for (int j=0; j<d; j++)
cout << szyfr[j];
return 0;
}
Zadanie 3.
Uzupełnij zapis algorytmu tak, aby w wyniku jego działania otrzymać odszyfrowany tekst s.
Uwaga: W zapisie możesz wykorzystać operacje dodawania, odejmowania, mnożenia, dzielenia, dzielenia całkowitego i brania reszty z dzielenia całkowitego, operację zamiany dwóch znaków ↔ oraz samodzielnie napisane funkcje.
Specyfikacja:
Dane:
d – długość zaszyfrowanego tekstu, d > 1
szyfr [1..d] – zaszyfrowany tekst o długości d
k – liczba całkowita dodatnia taka, że k < d
n – liczba całkowita dodatnia taka, że n < d
Wynik:
s [1..d] – tekst jawny
Algorytm:
od j=1 do d s[j] ← szyfr[j] i ← 1 dopóki i <= d-n-k i ← i+n dopóki i >= 1 s[i] ↔ s[i+k] i ← i-n





















