Witam, mam następujący kod:
#include <iostream>
using namespace std;
string szyfruj2(string tekst, int klucz1, int klucz2)
{
char pomocnik;
klucz1%=26;
klucz2%=26;
cout<<"Klucz 1: "<<klucz1<<endl;
cout<<"Klucz 2: "<<klucz2<<endl;
for(int i=0; i<tekst.size(); i++)
{
pomocnik=tekst[i];
if(i%2!=0)
{
pomocnik+=klucz1;
if(pomocnik>122)
{
pomocnik-=26;
tekst[i]=pomocnik;
}
else
{
tekst[i]=pomocnik;
}
}
else if(i%2==0)
{
pomocnik+=klucz2;
if(pomocnik>122)
{
pomocnik-=26;
tekst[i]=pomocnik;
}
else
{
tekst[i]=pomocnik;
}
}
}//for
return tekst;
}
int main()
{
string wyraz;
int k1, k2;
cout<<"Podaj wyraz do zaszyfrowania: ";
cin>>wyraz;
while(true)
{
cout<<"Podaj klucz dla liczb nieparzystych (mniejszy od 1000): ";
cin>>k1;
if(k1>1000)
{
cout<<"Klucz jest wiekszy od 1000"<<endl;
}
else
{
break;
}
}
while(true)
{
cout<<"Podaj klucz dla liczb nieparzystych (mniejszy od 1000): ";
cin>>k2;
if(k2>1000)
{
cout<<"Klucz jest wiekszy od 1000"<<endl;
}
else
{
break;
}
}
cout<<endl<<"Zaszyfrowany wyraz to \""<<szyfruj2(wyraz, k1, k2)<<"\""<<endl;
return 0;
}
i problem jest taki, że czasami nawet jeżeli pomocnik jest większy od 122, to nie odejmuje, a nawet gdy się go wyświetli, to pokazuje liczbę ujemną. Dlaczego tak się dzieje?