Funkcja warunkowa dla cin.good

0

Cześć, dopiero zaczynam zabawę z C++ i postanowiłem napisać krótki programik dla sprawdzenia. Program ma pobrać trzy liczby rzeczywiste i sprawdzić czy to się zgadza. Wszystko fajnie działa, ale nie jestem w stanie dojść co zrobić, żeby zamiast "1" dla prawdy i "0" dla fałszu pojawiało się np. "Tak :)" i "Nie :(". Na razie wyskakuje mi "1Tak :)"

 
#include <iostream>
using namespace std;

int Czysc()
{
    cin.clear();
    cin.sync();
}

int plrzeczywista()
{
    float a;
    cout << "Podaj pierwsza liczbe rzeczywista: ";
    cin >> a;
}

int plrzeczywista1()
{
    float b;
    cout << "Podaj druga liczbe rzeczywista: ";
    cin >> b;
}

int plrzeczywista2()
{
    float c;
    cout << "Podaj trzecia liczbe rzeczywista: ";
    cin >> c;
}

int WczytanoTakNie()
{
    cout << "Wczytano? " << cin.good() << endl;
}

int main()
{
    plrzeczywista();
    WczytanoTakNie();
    Czysc();
    plrzeczywista1();
    WczytanoTakNie();
    Czysc();
    plrzeczywista2();
    WczytanoTakNie();
    Czysc();
    return 0;
}

Próbowałem

int WczytanoTakNie()
{
    cout << "Wczytano? " << cin.good();
    if (cin.good() == 1 )
        cout << "Tak :)" << endl;
}
1

Nie ogarniam, ale jedynka pochodzi od:

 cout << "Wczytano? " << cin.good(); 
1
if (cin.good() == 1 )

cin.good() zwraca bool, więc nie porównaj tego z intem. Albo

if (cin.good() == true)

albo najlepiej

if (cin.good())
0

@up
Dzięki za radę, przyda się na przyszłość. Teraz mam inny błąd. Chciałem, żeby zwracano inny char, jeżeli zostanie wpisana litera, ale nie działa. Jakieś rady?

int TakczyNie()
{
    cin.good();
    if ( cin.good() == true)
    {
    cout << " - Wczytano? Tak :)" << endl;
    if (cin.good() == false)
    {
        cout << " - Wczytano? Nie :(" <<endl;
    }
    }
} 
1
  1. Wcięcia. Jak wkleisz ten kod do http://format.krzaq.cc, to zobaczysz, że drugi if jest wewnątrz pierwszego, więc nigdy tam nie wejdziesz.
  2. Nie masz return, więc ta funkcja nic nie zwraca.
  3. Czemu ma służyć pierwsze cin.good(), które samo stoi jak sierotka?
0

Bo to część reszty kodu. W momencie gdy zostawiłem

int TakczyNie()
{
    cin.good();
    if ( cin.good() == true)
    cout << " - Wczytano? Tak :)" << endl; 
}

To działa to tak:
Podaj liczbe rzeczywista: 1 - Wczytano? Tak :)
Podaj liczbe rzeczywista: a - Wczytano? Tak :)
Nie chodzi mi o gotowe rozwiązanie, tylko naprowadzenie :)

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