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

Problem z przedziałem liczbowym i sprawdzeniem warunków.

Ostatnio zmodyfikowano 2017-06-08 16:49
Autor Wiadomość
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ę :)
P-162244
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)
P-162247
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, ...) 
P-162248
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();
}
P-162258
« 1 »
  Strona 1 z 1