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

Komenda if() - za każdym razem spełnia mi warunek

Ostatnio zmodyfikowano 2014-12-22 16:16
Autor Wiadomość
Redami
Temat założony przez niniejszego użytkownika
Komenda if() - za każdym razem spełnia mi warunek
» 2014-12-22 15:29:26
Witam serdecznie,

Jestem osobą zupełnie zieloną jeśli chodzi o programowanie. W związku z tym, jak przystało na całkiem nową osobę, mam problem z którym sobie nie radze.
Może najpierw wkleję kod, a następnie opisze problem.

C/C++
#include <iostream>
int main()
{
    using namespace std;
    int dzialanie;
    float a, b;
    bool spr11g, spr12g;
   
    do
    {
        cout << "\nPodaj liczbe A" << endl;
        cin >> a;
        cout << "Wprowadziles liczbe " << a << endl;
        spr11g = cin.good();
        cout << "wartosc logiczna przy good: " << spr11g << endl;
        cin.clear();
        cin.sync();
        cout << "\nPodaj liczbe B" << endl;
        cin >> b;
        cout << "Wprowadziles liczbe " << b << endl;
        spr12g = cin.good();
        cout << "wartosc logiczna przy good: " << spr12g << endl;
        cin.clear();
        cin.sync();
        if( spr11g && spr12g ) // tu jest problem
             cout << "Podales niepoprawne liczby. Sprobuj jeszcze raz." << endl;
       
    } while( !spr11g && !spr12g );
   
   
    cout << "Koniec" << endl;
   
    return 0;
}

Chciałem osiągnąć następującą rzecz. W momencie jak do "a" i "b" wprowadzę cyfrę, komenda
if( spr11g && spr12g )
 jest pomijana. Gdy zamiast cyfry wpiszę jakąkolwiek literę, to pojawia się napis "Podales niepoprawne liczby. Sprobuj jeszcze raz." i muszę wprowadzić a i b jeszcze raz.
Problem polega na tym, że bez zględu na to, co dodam do a i b to i tak komunikat z if się pojawia. Komenda
} while( !spr11g && !spr12g );
 działa właściwie, a warunek jest przeciwny. Idąc tym torem rozumowania
if
 powinno aktywować się tylko wtedy gdy warunek z
while
 nie jest aktywny.

Jeśli jest taka możliwość, to prosił bym was o wskazanie błędu w moim rozumowaniu, co kombinuje źle.

Pozdrawiam!
P-123225
wilkoo13
» 2014-12-22 15:38:14
spr11g i spr12g mają wartość true/1 w tedy gdy dobrze wprowadzisz liczby. Wiec w warunku if powiadomisz użytkownika że źle wprowadził gdy zrobi to dobrze. :P

Każdy warunek się wykonuje gdy jest true. If, for, while, każdy się wykonuje gdy warunek jest true. Jeśli sprawdzasz czy spr11g && spr12g to sprawdzasz czy oba mają true, jeśli tak to wykonaj instrukcje.

Potem msz do while. Ma się wykonać gdy wprowadzisz złe liczby. Warunek w if tez musi sie spełnic gdy wprowadzisz złe liczby, wiec warunek bedzie taki sam skoro oczekujesz tego samego.
Mam nadzieje ze za bardzo nie pomieszałem. Warunek w if zrób taki jaki masz w dowhile
P-123226
Redami
Temat założony przez niniejszego użytkownika
» 2014-12-22 16:16:27
Dziękuje za pomoc ;) Chyba się sam zapętliłem w analizie.
Jeszcze raz dziękuje i do zamknięcia!
P-123229
« 1 »
  Strona 1 z 1