Poniższy program dot. szyfrowania Cezara z Książki Informatyka na czasie 3 podręcznik liceum str. 39 daje przykład szyfrowania dużych liter i wygląda, że działa prawidłowo.
*Myślałem, że prosta zamiana w linii nr 18 warunku z 'Z' na 'z' pozwoli, że program będzie działał podobnie z dla wpisywanych małych liter. Jednak dla wpisywanych liter "s, t, u, v, w, x, y, z" program daje wynik nieprawidłowy czyli spoza zakresy liter to jest Ç, ü, é, â, ä, ů, ć. Należy sądzić, że tylko dla tych liter nie działa działanie -26 w programie.
Nie rozumiem tego, dlaczego to się dzieje.
Moje próby poszerzenia tego programu o dwie poniższe linijki które mają zadanie wykryć duże i małe litery kończy się również niepowodzeniem
if (znak>='A' && znak<='Z') //sprawdzamy czy jest duża litera
if (znak>='a' && znak<='z') //sprawdzamy czy jest mała litera
Załączam kod programu, który opisuję tekście wyżej oznaczonym gwiazdką
Proszę o pomoc w zrozumieniu ww. problemu
#include <iostream>
#include <string>
using namespace std;
string Cezar (int klucz, string tekst)
{
char kod;
int dl = tekst.length();
string szyfrogram = "";
for (int i=0; i<dl; i++)
{
if (tekst[i] == ' ') kod = ' ';
else
{
kod = tekst[i] + klucz;
if (kod>'z') kod = kod - 26;
}
szyfrogram = szyfrogram + kod;
}
return szyfrogram;
}
int main ()
{
string jawny;
int klucz;
cout << "Podaj tekst: ";
getline(cin,jawny);
cout << "Podaj klucz: ";
cin >> klucz;
cout << "Szyfrogram: " << Cezar(klucz,jawny) << endl;
return 0;
}