Hej. Napisałem program "Szyfr Cezara", ale jedna rzecz mi nie działa. Otóż, najpierw piszę np. "szyfruj", potem podaję liczbę dla szyfrowania (o ile mam przesunąć alfabet), a potem gdy kliknę enter to program mi się wywala, muszę od razu po podaniu liczby podać łańcuch znaków. Czyli
szyfruj
1//tu daję enter program się wywala
szyfruj
1To jest tekst do zaszyfrowania//program działa
Innymi słowy chcę tekst do zaszyfrowania wpisać po enter po podaniu liczby dla szyfrowania i nie wiem czemu mi to nie działa.
Kod programu:
#include <iostream>
#include <string>
using namespace std;
void szyfruj(int n){
string zdanie;
getline(cin, zdanie);
int dl=zdanie.length();
for (int i=0; i<dl; i++) {
if (zdanie[i] < 123 && zdanie[i] > 96) {
if (zdanie[i]+n > 122) cout << char(zdanie[i]+n-26);
else cout << char(zdanie[i]+n);
}
else if (zdanie[i] < 91 && zdanie[i] > 64) {
if (zdanie[i]+n > 90) cout << char(zdanie[i]+n-26);
else cout << char(zdanie[i]+n);
}
else cout << zdanie[i];
}
}
void odszyfruj(int n){
string zdanie;
getline(cin, zdanie);
int dl=zdanie.length();
for (int i=0; i<dl; i++) {
if (zdanie[i] < 123 && zdanie[i] > 96) {
if (zdanie[i]-n < 97) cout << char(zdanie[i]-n+26);
else cout << char(zdanie[i]-n);
}
else if (zdanie[i] < 91 && zdanie[i] > 64) {
if (zdanie[i]-n < 65) cout << char(zdanie[i]-n+26);
else cout << char(zdanie[i]-n);
}
else cout << zdanie[i];
}
}
int main(){
string haslo;
int n;
cin >> haslo;
if (haslo == "szyfruj") {
cin >> n;
szyfruj(n);
}
else if (haslo == "odszyfruj"){
cin >> n;
odszyfruj(n);
}
return 0;
}