Witam, mam pytanie apropo zadania c. z załączonego zdjęcia, chodzi o szyfrowanie Cezarem, program zwraca tekst jedynie częściowo zaszyfrowany tekst. W czym jest problem? Z góry dziękuję za pomoc.
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
using namespace std;
int obliczKlucz(string s)
{
int a = count(s.begin(), s.end(), 'a');
int e = count(s.begin(), s.end(), 'e');
int o = count(s.begin(), s.end(), 'o');
return (a+e+o);
}
string szyfruj (string tekst, int klucz){
int i=0;
const int n=tekst.size();
char sz[n];
while(i<tekst.size()){
if(tekst[i]+klucz>126)
sz[i]=(char)(tekst[i]+klucz-95);
else
sz[i]=(char)(tekst[i]+klucz);
i++;
}
return sz;
}
string rozszyfruj (string tekst, int klucz){
int i=0;
const int n=tekst.size();
char sz[n];
while(i<tekst.size()){
if(tekst[i]-klucz>126)
sz[i]=(char)(tekst[i]-klucz+95);
else
sz[i]=(char)(tekst[i]-klucz);
i++;
}
return sz;
}
int main(){
int klucz=0;
int w=0;
string tekst;
string szyfr;
string roz;
cout<<"Wybierz operacje: 1-zaszyfrowanie tekstu 2-rozszyfrowanie tekstu"<<endl;
cin>>w;
switch(w){
case 1:{
cout<<"Podaj tekst:"<<endl;
cin>>tekst;
klucz=obliczKlucz(tekst);
cout<<"Tekst po zaszyfrowaniu: "<<endl;
szyfr=szyfruj(tekst, klucz);
cout<<szyfr<<endl;
ofstream zapis;
zapis.open("cezar.txt");
zapis<<szyfr;
zapis.close();
zapis.open("klucz.txt");
zapis<<klucz;
zapis.close();
break;
}
case 2:{
ifstream odczyt;
/*odczyt.open("cezar.txt");
odczyt<<szyfr;
odczyt.close();
odczyt.open("klucz.txt");
odczyt<<klucz;
cout<<"Tekst po rozszyfrowaniu: "<<endl;
roz=rozszyfruj(szyfr, klucz);
cout<<roz;
*/break;
}
default:{
cout<<"Wybrano nieprawidlowa operacje"<<endl;
break;
}
}
return 0;
}