Komenda if() - za każdym razem spełnia mi warunek
Ostatnio zmodyfikowano 2014-12-22 16:16
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. #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 ) 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! |
|
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 |
|
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! |
|
« 1 » |