Cerința
Se citește un text de maxim 256
caractere. Să se afișeze textul după aplicarea Cifrului Caesar
.
Cifrul Caesar
este o metodă de criptare în care fiecare literă este înlocuită cu o altă literă ce se află la un număr fix de poziții după aceasta în alfabet. Este numită după Julius Caesar, care o folosea în corespondența privată.
Date de intrare
Fișierul de intrare caesar.in
conține:
Cerința
Se citește un text de maxim 256
caractere. Să se afișeze textul după aplicarea Cifrului Caesar
.
Cifrul Caesar
este o metodă de criptare în care fiecare literă este înlocuită cu o altă literă ce se află la un număr fix de poziții după aceasta în alfabet. Este numită după Julius Caesar, care o folosea în corespondența privată.
Date de intrare
Fișierul de intrare caesar.in
conține:
- Pe prima linie un text format din maxim
256
caractere. - Pe a doua linie un număr
n
reprezentând numărul de poziții. - Pe a treia linie operația ce se va aplica pe text:
encrypt
pentru criptare.decrypt
pentru decriptare.
Date de ieșire
Fișierul de ieșire dbftbs.out
va conține textul prelucrat.
Restricții și precizări
1 ≤ n ≤ 100
- Se va folosi alfabetul englez. Literele își păstrează capitalizarea.
- Atenție la exemple!
Exemple:
Exemplu #1
caesar.in
caesar 1 encrypt
dbftbs.out
dbftbs
Exemplu #2
caesar.in
dbftbs 1 decrypt
dbftbs.out
caesar
Exemplu #3
caesar.in
caeSaR 10 encrypt
dbftbs.out
mkoCkB
Exemplu #4
caesar.in
CAEsAr 10 decrypt
dbftbs.out
SQUiQh
Exemplu #5
caesar.in
If he had anything confidential to say, he wrote it in cipher, that is, by so changing the order of the 26 letters of the alphabet, that not a word could be made out. 7 encrypt
dbftbs.out
Pm ol ohk hufaopun jvumpkluaphs av zhf, ol dyval pa pu jpwoly, aoha pz, if zv johunpun aol vykly vm aol 26 slaalyz vm aol hswohila, aoha uva h dvyk jvbsk il thkl vba.
#include <bits/stdc++.h> using namespace std; ifstream cin("caesar.in"); ofstream cout("dbftbs.out"); char s[300], cer[20]; int n; bool LM(char ch) { return ch >= 'A' && ch <= 'Z'; } bool lm(char ch) { return ch >= 'a' && ch <= 'z'; } int main() { cin.getline(s, 260); cin >> n; cin >> cer; n=n%26; if(strcmp(cer, "encrypt") == 0) { int i = 0; while(s[i]) { if(lm(s[i]) || LM(s[i])) { if(LM(s[i])) { int nr = s[i] + n; if(nr > 'Z') s[i] = nr - 'Z' + 'A' - 1; else s[i] = nr; } else { int nr = s[i] + n; if(nr > 'z') s[i] = nr - 'z' + 'a' - 1; else s[i] = nr; } } i++; } cout << s; } else { int i = 0; while(s[i]) { if(LM(s[i]) || lm(s[i])) { if(LM(s[i])) { s[i] = s[i] - n; if(s[i] < 'A') s[i] += 'Z' - 'A' + 1; } else { s[i] = s[i] - n; if(s[i] < 'a') s[i] += 'z' - 'a' + 1; } } i++; } cout << s; } return 0; }