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
256caractere. - Pe a doua linie un număr
nreprezentând numărul de poziții. - Pe a treia linie operația ce se va aplica pe text:
encryptpentru criptare.decryptpentru 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;
}