Poeksperymentowałem troszeczkę z Twoim kodem i sporo czasu spędziłem szukając błędu, a był on naprawdę banalny jak się okazuje . Jest on dowodem na to, że jeden pojedynczy znak może zrujnować nam całe godziny pracy .
string szyfr(string k, int n)
{
for (int i = 0; i<k.length(); i++)
{
char c = k[i];
c -= n; //Ktoś tu zapomniał z powrotem przypisać wartośc do zmiennej c ;) (ERROR: c-n;)
if (c<65)
{
c += 26;
}
k[i] = c;
}
return k;
}
Po poprawieniu tej linijki kodu wszystko świetnie śmiga. Swoją drogą, ciekawy sposób na rozwiązanie problemu.
Pozdrawiam i miłego kodowania