Szyfr Cezara (omówienie)

24.08.2011

To zadanie również okazało się stosunkowo proste. 

Po pierwsze zauważmy, że z informacji podanych na wejściu jesteśmy w stanie łatwo wyliczyć liczbę K, która została użyta do zaszyfrowania wiadomości - wystarczy, że od numeru pierwszej litery zaszyfrowanej wiadomości odejmiemy numer pierwszej litery wiadomości przed zaszfrowaniem. Ponieważ K musi być nieujemne, należy pamiętać o dodaniu do wyniku 26 (czyli liczby liter w alfabecie), jeśli wyliczona różnica jest ujemna.

Znając K możemy już odszyfrować wiadomość, metodą analogiczną do szyfrowania. Tym razem zamiast przesuwać litery o K pozycji do przodu, należy cofać się o K pozycji.

1
2
3
4
5
6
7
8
int dif = text[0] - first;
if ( dif < 0 ) dif += 26;
for ( int i = 0; i < n; i++){
  text[i] -= dif;
  while ( text[i] < 'a') text[i] += 26;
  while ( text[i] > 'z') text[i] -= 26;
}
printf("%s\n", text);

Organizatorzy:

Wrocławski Portal Informatyczny Instytut Informatyki Uniwersytet Wrocławski Wrocław

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com