Witam! Otóż mam problem z szyfrem Vigenere'a, pierwszy program deszyfruje jak należy, ale kiedy przychodzi do szyfrowania to już nie jest tak kolorowo, wyświetla poprawnie tylko pojedyncze litery, zauważyłem problem jednak nie potrafię znaleźć jego źródła. Proszę o pomoc!
DESZYFRUJE:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int s,k, l=0;
string slowo, klucz;
getline(cin, slowo);
getline(cin,klucz);
s=slowo.length();
k=klucz.length();
for(int i=0; i<s; i++)
{
if(slowo[i]==32)
{
slowo[i]=' ';
}
else
{
if(l>=k)
{
l=0;
}
slowo[i]=slowo[i]-klucz[l];
l++;
if(slowo[i]<=0)
{
slowo[i]=slowo[i]+64+26;
}
else
{
slowo[i]=slowo[i]+64;
}
}
}
cout<<slowo;
}
SZYFRUJE:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int s,k, l=0;
string slowo, klucz;
getline(cin, slowo);
cin>>klucz;
s=slowo.length();
k=klucz.length();
for(int i=0; i<s; i++)
{
if(slowo[i]==32)
{
slowo[i]=' ';
}
else
{
if(l>=k)
{
l=0;
}
slowo[i]=slowo[i]+klucz[l];
l++;
if(slowo[i]>=155)
{
slowo[i]=slowo[i]-64-26;
}
else
{
slowo[i]=slowo[i]-64;
}
}
}
cout<<slowo;
}