Klasyczny szyfr Cezara polega na zastąpieniu każdej litery tekstu jawnego literą leżącą o trzy
pozycje dalej w alfabecie, na przykład A kodujemy jako D, B jako E itd. Po alfabecie
poruszamy się cyklicznie – po Z następuje z powrotem A, w związku z czym literę Z
zakodujemy jako C, Y jako B, a X jako A. Jeśli tekst jawny zawiera znak odstępu (spację),
to ten znak odstępu (i tylko on) pozostaje niezmieniony. W tym zadaniu posługujemy się
26 wielkimi literami alfabetu łacińskiego:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Wykonaj następujące polecenia:
a) Zaszyfruj poniższy komunikat, używając klasycznego szyfru Cezara.
PRIMUM NON NOCERE
b) Szyfrowanie z kluczem k oznacza zastępowanie każdej litery literą o k pozycji dalszą,
z zachowaniem cykliczności alfabetu. Odszyfruj poniższy szyfrogram, który został
zakodowany szyfrem Cezara z kluczem k 10 .
KFO MOCKB
c) Odszyfruj poniższy szyfrogram, który został zakodowany szyfrem Cezara z kluczem
k 265 .
HTLNYT JWLT XZR
Sa to zadania z matury z informatyki Sierpien 2010
A)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#define STOP '\n'
using namespace std;
int main() {
int a=0;
int b=0;
int znacznik=0;
char c;
char tab[19];
char tab2[19];
char alfabet[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int l_znak = 0;
cout<<"Podaj wyraz"<<'\n';
while ((c = getchar()) != STOP) {
tab[l_znak]=c;
l_znak++;
}
if (l_znak<=20) {
for( int i=0; i!=l_znak; i++) {
for(int x=0; x!=23; x++) {
if (tab[i]==alfabet[x]) {
b=x;
a=x;
a=a+3;
tab2[i]=alfabet[a];
}
if (tab[i]==' ') {
tab2[i]=' ';
}
}
for(int x=23; x!=26; x++) {
a=0;
if (tab[i]==alfabet[x]) {
a=x-23;
tab2[i]=alfabet[a];
}
}
}
cout<<"Zaszyfrowany komunikat z uzyciem klasycznego szyfru Cezara brzmi: ";
for(int i=0; i!=l_znak; i++) {
cout<<tab2[i];
}
cout<<'\n';
system("Pause");
} else {
cout<<"Podales za dlugi wyraz"<<'\n';
system("Pause");
}
}
Wklejam Kod z podpunktu a
Na Podpunkt a) mam odpowiedz i kod ale nie mam pojecia jak zrobic C-B czy ktos moglby mi pomoc?
Zrobic podpunkt b i c ?