Matura 2017 (maj). Zadanie 1. Szyfrowanie

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

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>