Poprawne zagnieżdżenie if w ifie
Ostatnio zmodyfikowano 2017-05-16 23:15
TheFandorn Temat założony przez niniejszego użytkownika |
Poprawne zagnieżdżenie if w ifie » 2017-05-14 21:20:02 Witam, chcę napisać prosty program, do którego będzie można wprowadzić dwie zmienne, które muszą być większe od 50 ale mniejsze od 200. Program musi także uważać na błędy przy próbowaniu wpisania litery zamiast liczby. Napisałem na razie tylko część programu i mam problem z zagnieżdżeniem w IFie linijki kodu odpowiedzialnej za kontrole przedziału liczb (większe od 50, mniejsze od 200). Nie wiem jak go poprawnie zagnieździć. Mógłby mi ktoś poproszę pomóc? #include <iostream> int main() { int a; int b; using namespace std; cout << "Po wprowadzeniu dlugosci bokow prostokatu program obliczy i poda jego pole oraz obwod." << endl; cout << "Podaj dlugosc boku A. Musi sie ona miescic w przedziale od 50 do 200 jednostek." << endl; do { cin >> a; if( cin.good() ) cout << "Wczytano." << endl; if( 50 < a > 200 ) cout << "Podales zla liczbe" << endl; else cout << "Blad, podaj liczbe a nie litere." << endl; cin.clear(); cin.sync(); } while( cin.good(), 50 > a < 200 ); return 0; }
Wiem, bez linijek "if(50 < a > 200)" i "cout << "Podales zla liczbe" << endl;" wszystko działa poprawnie. One psują działanie programu najprawdopodobniej dlatego, że nie wiem jak poprawnie je zagnieździć. Z góry dziękuję za pomoc i pozdrawiam. |
|
Saran |
» 2017-05-14 21:46:42 if( a > 50 && a < 200 ) { } |
|
TheFandorn Temat założony przez niniejszego użytkownika |
» 2017-05-14 22:20:20 |
|
wojownik266 |
» 2017-05-14 22:38:03 Na Przykład: if( a > 50 && a < 200 ) { cout << "Podales zla liczbe" << endl }
|
|
TheFandorn Temat założony przez niniejszego użytkownika |
» 2017-05-14 22:42:00 Nadal to samo |
|
wilkoo13 |
» 2017-05-14 22:47:09 Jeszcze while |
|
latajacaryba |
» 2017-05-14 22:48:21 Zakładam, że chodzi o "blad, podaj liczbe a nie litere" if( 50 < a && a > 200 ) cout << "Podales zla liczbe" << endl; else cout << "Blad, podaj liczbe a nie litere." << endl;
Po pierwsze: a > 50 i a > 200 - bez sensu, jeśli a > 200 to zawsze będzie większe od 50 Po drugie masz else, więc jeśli if nie jest prawdziwy, to zawsze wystąpi instrukcja else. Zamiast else wpisz Czyli "w przeciwnym wypadku, jeśli ..." Powinno być tak: if( 50 > a || a > 200 ) cout << "Podales zla liczbe" << endl; else if( cin.good == false ) cout << "Blad, podaj liczbe a nie litere." << endl;
Jeśli a > 200 lub mniejsze od 50, to: ... w przeciwnym wypadku, jeśli cin.good == false, to... |
|
TheFandorn Temat założony przez niniejszego użytkownika |
» 2017-05-14 22:53:43 Wielkie dzięki, to ">" "<" poprawilem po chwili ale właśnie nie wiedziałem jak działa "else if". JEDNAK NIE. Cholera, wiem, że robie zamieszanie. Jeszcze raz wkleję cały kod #include <iostream> int main() { int a; int b; using namespace std; cout << "Po wprowadzeniu dlugosci bokow prostokatu program obliczy i poda jego pole oraz obwod." << endl; cout << "Podaj dlugosc boku A. Musi sie ona miescic w przedziale od 50 do 200 jednostek." << endl; do { cin >> a; if( cin.good() ) cout << "Wczytano." << endl; if( 50 > a || a > 200 ) cout << "Podales zla liczbe" << endl; else if( cin.good() == false ) cout << "Blad, podaj liczbe a nie litere." << endl; cin.clear(); cin.sync(); } while( cin.good() && 50 < a && a < 200 ); return 0; }
Po wpisaniu litery wyswietla się "podales zla liczbe" i funkcja while ewidentnie tez nie dziala poprawnie. Przepraszam za ten cholerny ambaras. |
|
« 1 » 2 |