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

[C++]Zmienne oraz czyszczenie bufora

Ostatnio zmodyfikowano 2013-02-19 16:11
Autor Wiadomość
oskarkxyz
Temat założony przez niniejszego użytkownika
[C++]Zmienne oraz czyszczenie bufora
» 2013-02-19 15:54:16
Witam.

Staram się zrobić kalkulator i nie za bardzo mi to wychodzi. Jeżeli wpiszę "a" za pierwszym razem poprawnie to bufor i tak się czyści i a = 0. Analogicznie jest ze zmienną "b". Jeżeli najpierw wpiszę np. wyraz "tak" w zmienną "a", a potem wpiszę liczbę to wszystko jest OK i "kalkulator" jak najbardziej liczy. Jakieś pomysły?

C/C++
[...]
do
{
    cout << "Podaj pierwsza liczbe" << endl;
    cin >> a;
    if( a = std::cin.fail() ) //zabezpieczenie liczby a
    do
    {
        std::cin.clear();
        std::cin.sync();
        cout << "Sprobuj jeszcze raz!" << endl;
        cin >> a;
    } while( std::cin.fail() );
   
    cout << "Podaj druga liczbe" << endl;
    cin >> b;
    if( b = std::cin.fail() ) //zabezpieczenie liczby b
    do
    {
        std::cin.clear();
        std::cin.sync();
        cout << "Sprobuj jeszcze raz!" << endl;
        cin >> b;
    } while( std::cin.fail() );
   
    [...]
Nie wydaje mi się, żeby był potrzebny cały kod, ale w razie czego to mogę podrzucić.
P-76535
Berux
» 2013-02-19 16:02:35
C/C++
do
{
    cout << "Podaj pierwsza liczbe" << endl;
    cin >> a;
    if( a = std::cin.fail() ) //zabezpieczenie liczby a
    do
    {
        std::cin.clear();
        std::cin.sync();
        cout << "Sprobuj jeszcze raz!" << endl;
        cin >> a;
    } while( std::cin.fail() );
   
    cout << "Podaj druga liczbe" << endl;
    cin >> b;
    if( b = std::cin.fail() ) //zabezpieczenie liczby b
    do
    {
        std::cin.clear();
        std::cin.sync();
        cout << "Sprobuj jeszcze raz!" << endl;
        cin >> b;
    } while( std::cin.fail() );
   

w if'ie (tym pierwszym i drugim) masz przypisanie do zmiennej a/b wyniku  wprowadzania liczby(czy wprowadzanie się powiodło, czy nie)  jako liczbę całkowitą (0 lub > 0),więc.. Użyj zmiennej bool (osobnej), aby sprawdzać czy wprowadzanie się powiodło.
P-76536
oskarkxyz
Temat założony przez niniejszego użytkownika
» 2013-02-19 16:11:21
W życiu bym na to nie wpadł. Dziękuję Ci :)

@@edit
utworzyłem zmienne
bool aczysukces
bool bczysukces

następnie zamieniłem a = std::cin.fail() na aczysukces = std::cin.fail() i analogicznie ze zmienną b.

To tak tylko gdyby ktoś potrzebował pomocy to może tutaj zajrzeć :)
P-76537
« 1 »
  Strona 1 z 1