przejście do nowej linii przed getline

0

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;
}
0
if (haslo == "szyfruj") {
    cin >> n;
    cin.sync();
    szyfruj(n);
}
0

Hm, no też mi nie działa... Wyrzuca z programu.

0

mnie nie wyrzuca.

0

Mnie wyrzuca i w systemie sprawdzania zadań mam 0 punktów, więc ich też chyba wyrzuca ;)

cin.get(); 

za to mnie nie wyrzuca.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0