Problem z przedziałem liczbowym i sprawdzeniem warunków.
Ostatnio zmodyfikowano 2017-06-08 16:49
adam.kostek Temat założony przez niniejszego użytkownika |
Problem z przedziałem liczbowym i sprawdzeniem warunków. » 2017-06-08 13:41:44 Witam, mam problem z instrukcją "if" i sprawdzeniem warunków. Gdy kopiuję do kompilatora ten program:
#include <iostream> #include <conio.h>
using namespace std;
int main() { int iLiczba; cout << "Podaj liczbę całkowitą: "; cin >> iLiczba; if(iLiczba >= -9 && iLiczba <=9) { cout << "Jednocyfrowa" << endl; } else if((iLiczba >9 && iLiczba < 100) || (iLiczba < -9 && iLiczba > -100)) { cout << "Dwucyfrowa" << endl; } if(iLiczba < 0) { cout << "Ujemna" << endl; } else if(iLiczba >= 100) { cout << "Wprowadzona liczba nie jest liczbą jednocyfrową, dwucyfrową ani ujemną" << endl; }
getch(); return 0; }
- wszystko działa jak należy, to znaczy podana liczba jest sprawdzana, czy należy do tego przedziału:
if(iLiczba >= -9 && iLiczba <=9)
i są sprawdzane oba warunki.
Natomiast kiedy sam próbuję napisać taki program z jedną tylko instrukcją "if" oraz "else", to niezależnie od wielkości podanej liczby zawsze realizuje się tylko "else" :( Nie wiem co robię źle, oto program, który napisałem:
#include <iostream> #include <conio.h>
void main() { int Liczba1; std::cout << "Podaj liczbe wieksza od 0 i mniejsza od 5: "; std::cin >> Liczba1;
if (Liczba1 <= 0 && Liczba1 >= 5) { std::cout << "Wprowadzona liczba nie miesci sie w przedziale/ nie spelnia warunkow."; } else { std::cout << "Wprowadzona liczba miesci sie w przedziale. Dziekuje za wspolprace."; } getch(); }
Proszę o pomoc i wyjaśnienie, gdzie popełniam błąd i dlaczego nie działa to tak jak myślę, że powinno. Dziękuję :) |
|
1aam2am1 |
» 2017-06-08 14:28:00 Ten warunek jest zły: if (Liczba1 <= 0 && Liczba1 >= 5) Jeżeli liczba jest mniejsza od 0 i jest większa od 5 Powinno być if (Liczba1 >= 0 && Liczba1 <= 5) |
|
darko202 |
» 2017-06-08 14:28:33 && to operator i dlatego warunek (Liczba1 <= 0 && Liczba1 >= 5) jest zawsze fałszywy musisz użyć warunku lub ( || )
bo liczba leży w (... ,0> < 5, ...) |
|
adam.kostek Temat założony przez niniejszego użytkownika |
» 2017-06-08 16:49:09 Już zrozumiałem swój błąd, nie doczytałem, że "if" musi być true, żeby został wykonany blok i dlatego kombinowałem inaczej. Zamieniłem kody bloków "if" i "else" i działa tak jak chciałem :) Dziękuję Wam za pomoc :) Tak wygląda program, który działa tak jak chciałem:
#include <iostream> #include <conio.h>
void main() { int nLiczba1; std::cout << "Podaj liczbe wieksza od 0 i mniejsza od 5: " << std::endl; std::cin >> nLiczba1;
if (nLiczba1 > 0 && nLiczba1 < 5) { std::cout << "Liczba jest poprawna."; } else { std::cout << "Liczba nie jest poprawna."; } getch(); } |
|
« 1 » |