Dzień dobry, witam serdecznie. Napisałem sobie ostatnio (w związku z maturą z informatyki) funkcję szyfrującą za pomocą szyfru cezara. Napisałem ją na tablicach charów o jakoś tak:
void cezar(int key, char word[])
{
int len = strlen(word);
key=key%26;
if (key>=0)
{
for (int i=0;i<len;i++)
{
if (word[i] + key <= 'Z')
{
word[i]+=key;
}
else
{
word[i]=word[i]+key-26;
}
}
}
else
for (int i=0;i<len;i++)
{
if (word[i] + key >= 'A')
{
word[i]+=key;
}
else
{
word[i]=word[i]+key+26;
}
}
}
i wszystko śmiga wszystko gra a nawet buczy. Ale kiedy doszedłem do wniosku, że musiałbym stworzyć tutaj w mainie tablice charów o określonej ilości znaków to pomyślałem sobie "a co gdyby użyć stringów?". I stworzyłem takie coś:
void cezar(int key, string word)
{
int len = word.length();
key=key%26;
for(int i=0; i<len;i++)
{
if (key + word[i] > 90)
word[i]= (word[i] + key) - 26;
else if (key + word[i] < 65)
word[i]= (word[i] + key) + 26;
else
word[i]= word [i] + key;
}
}
niestety ten kod jest już lekko niesforny i nie chce się słuchać kompilatora. Po wpisaniu parametrów klucza i stringa ze słowem do zaszyfrowania słowo w ogóle się nie szyfruje. Program po wrzuceniu na ekran "zaszyfrowanego" już stringa, wyrzuca go w postaci wejściowej. Moje pytanie brzmi co zrobiłem źle? Czy ze stringami nie mogę postępować jak z tablicami charów?
edit. Oczywiście dołączyłem odpowiednie biblioteki do obydwu funkcji.