Mamy na przykład wyraz (słowo?): SIEMANO <- jest typu string
Chcemy teraz przesunąć każdą z liter o kilka miejsc alfabetu (jak w szyfrze cezara).
Mamy to zrobić w ten sposób, że odczytujemy każdą z liter i traktujemy ją jako typ char.
Robimy (litera + 3) i przesuwamy wartość w ASCII.
Pytanie, jak to ogarnąć? Próbowałem rzutowania, ale coś nie wychodzi, pewnie nie tędy droga.
Wiadomo, że gdyby na początku był już char to robimy tylko przesunięcie i z głowy. A może jakoś na początku zrobić konwersję i ze string'a machnąć char'a?
Pogubiłem się trochę :p
0
0
String to przecież tablica char-ów, więc można jak na nich. Pamiętaj tylko że jak wynik większy niż 'z'/'Z' wyjdzie, to odejmij od niego ('z' - 'a').
0
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "SIEMANO";
char c = s[2];
cout << c << endl;
c += 3;
cout << c << endl;
return 0;
}
0
No, ale...
#include <iostream>
#include <string>
using namespace std;
int main()
{
string txt="SIEMANO";
cout << "SIEMANO\n";
for(int i=0;i<txt.size();i++)
{
cout << txt[i];
}
cout << "\n";
for(int i=0;i<txt.size();i++)
{
cout << txt[i+1];
}
return 0;
}
Wynik:
SIEMANO
SIEMANO
IEMANO
...chyba nie w tym sensie?
0
Co to Twoim zdaniem robi? I co ma wspólnego z pytaniem albo moim kodem przykładowym?
cout << txt[i+1];
0
Kod cezara jest młócony na tym forum przynajmniej raz na dwa tygodnie, może trochę się wysil i poszukaj.