Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Po powrocie do menu if nie chce się wykonać

Ostatnio zmodyfikowano 2013-04-11 15:55
Autor Wiadomość
Berux
Temat założony przez niniejszego użytkownika
Po powrocie do menu if nie chce się wykonać
» 2013-04-11 15:44:25
Witam. Pisałem sobie program który zamienia wpisany tekst na szyfr cezara i na odwrót. Jednak gdy wybiorę opcję 1 w menu i potem powrócę do niego, i znów wybiorę jakąś opcję, to if nie chce się wykonać.
Oto kod w wersji krótszej:
C/C++
int main()
{
    char znak;
    string wypisanie = "";
    short wybor;
   
   
   
    while( true )
    {
        system( "cls" );
       
        cout << "---SzyfrCezara BETA---\n\n\n"
        "[1]Zamiana tekstu na szyfr Cezara\n"
        "[2]Zamiana szyfru Cezara na tekst\n\n"
        "> ";
        cin.clear();
        cin.sync();
        cin >> wybor;
        system( "cls" );
       
       
        if( wybor == 1 )
        {
            while( znak != '.' )
            {
                //...
            }
           
            wypisanie = "";
           
        }
       
        else if( wybor == 2 )
        {
            while( znak != '.' )
            {
                //...
            }
           
            wypisanie = "";
           
        }
       
        else
             return false;
       
    }
   
}
Proszę o pomoc.
P-80372
pekfos
» 2013-04-11 15:47:26
Resetuj
znak
 na początku pętli.
P-80375
Berux
Temat założony przez niniejszego użytkownika
» 2013-04-11 15:51:21
Nic nie dało. Teraz zauważyłem, że if się wykonuje, tylko nie oczekuje na naciśnięcie klawisza przez getch();

To, co jest w if'ach:
C/C++
if( wybor == 1 )
{
    while( znak != '.' )
    {
        znak = ' ';
        cout << wypisanie;
       
        cin.clear();
        cin.sync();
       
        znak = getch();
        wypisanie += zamiana_na_szyfr( znak );
        system( "cls" );
    }
   
    wypisanie = "";
   
}

else if( wybor == 2 )
{
    while( znak != '.' )
    {
        cout << wypisanie;
       
        cin.clear();
        cin.sync();
       
        znak = getch();
        wypisanie += zamiana_na_tekst( znak );
        system( "cls" );
    }
   
    wypisanie = "";
   
}

else
     return false;

}

}

Już działa. Zrobiłeś to co napisał pekfos także w pętli głównej.Dzięki pekfos :)
P-80377
pekfos
» 2013-04-11 15:55:08
<<nieaktualne>>
P-80379
« 1 »
  Strona 1 z 1