[C++] Sprawdzenie przedziału 2 - prośba o pomoc

Mam kolejne zadanie do zaliczenia.

Tym razem brzmi ono: “Napisz program, który sprawdza, czy podana przez użytkownika liczba nie należy do przedziału: <0;50) suma <100;200){150}.”

Osiągnąłem taki kod:

#include 

#include 


using namespace std;


int main(int argc, char *argv[])

{

    int a;

    cout<<"Podaj liczbe" <
    cin>> a; 

    if ((a<= 0) && (a < 50) && (a>=100) && (a<200) && (a != 150))

    {

    cout<<"Podana liczba nalezy do przedzialu" <
    }

    else

    {

    cout<<"Podana liczba nie nalezy do przedziału" <
    } 

    system("PAUSE");

    return EXIT_SUCCESS;

}

Lecz gdy wprowadziłem liczbę 20, program napisał: “Podana liczba nie należy do przedziału”, chociaż ta liczba ewidentnie należy.

Co mam zrobić lub gdzie popełniłem błąd aby podany wyżej program działał?

Bardzo proszę o pomoc… ![-o<

hmm,

&& - oznacza And/i

|| oznacza OR/lub,

tam gdzie suma, ma byc ||

iloczyny robisz &&

Twoj warunek

(…)(a<= 0) && (a>=100) (…)

Podaj mi liczbę, która to spełni.

Zmieniłem tak jak powiedziałeś, ale teraz kolejny problem…

Liczbę 20 i wyższe, to pisze, że należą ale tak samo pisze przy liczbie 50 i 51 itd…

Co robić?

Tak jak to napisał Zulowski powyżej. Przecież to jest podstawowa logika matematyczna! _lub_ to ||, _i_ to &&. Piszesz same &&, więc wszystkie te warunki musiały by być spełnione, ale się wykluczają.

To może Panowie w drodze wyjątku zapiszecie poprawnie ten warunek bo juz próbowałem na wszystkie sposoby i raz pisze ze 20 należy a raz że nie należy, a potem z kolei tak samo z 50… Sam już nie wiem… Błagam, pomóżcie… ![-o<

Podaj to co masz i przede wszystkim napisz co chcesz uzyskać, bo skąd mamy to wiedzieć?

Treść polecenia: “Napisz program, który sprawdza, czy podana przez użytkownika liczba nie należy do przedziału: <0;50) suma <100;200){150}”.

Mam taki kod:

#include 

#include 


using namespace std;


int main(int argc, char *argv[])

{

    int a;

    cout<<"Podaj liczbe" <
    cin>> a; 

    if ((a<= 0) && (a < 50) && (a>=100) && (a<200) && (a != 150))

    {

    cout<<"Podana liczba nalezy do przedzialu" <
    }

    else

    {

    cout<<"Podana liczba nie nalezy do przedziału" <
    } 

    system("PAUSE");

    return EXIT_SUCCESS;

}

Wiec teraz już chyba wiadomo co chcę uzyskać?

Chce uzyskać to ze program bedzie działać bo na razie szwankuje… :frowning: Nie wiem jak Wam to jaśniej wytłumaczyć… :frowning:

Dodane 05.06.2009 (Pt) 18:17

Chodzi mi o sam warunek, ewentualnie poprawki w kodzie… Błagam… ![-o<

mogą być gdzieś literówki:

if (((a<= 0) && (a < 50)) || ((a>=100) && (a<200)) || (a != 150))

{

cout<<"Podana liczba nalezy do zbioru <0;50)sum<100;200)minus {150}" <
}

else

{

cout<<"Podana liczba NIE nalezy do zbioru <0;50)sum<100;200)minus {150}" <
}

wersja 2

if (((a<= 0) || (a < 50)) && ((a>=100) || (a<200)) && (a != 150))

{

cout<<"Podana liczba NIE nalezy do zbioru <0;50)sum<100;200)minus {150}" <
}

wersja 3

if (!(((a<= 0) && (a < 50)) || ((a>=100) && (a<200)) || (a != 150)))

{

cout<<"Podana liczba NIE nalezy do zbioru <0;50)sum<100;200)minus {150}" <
}

else

{

cout<<"Podana liczba nalezy do zbioru <0;50)sum<100;200)minus {150}" <
}

a na przyszłość http://pl.wikibooks.org/wiki/C i włącz myślenie, przypomnij sobie logikę

Dalej jest to samo…

Od liczby 50 wzwyż pisze że należy do zbioru, chociaż 51 itd. do zbioru nie należą… :frowning:

Czy należy do pierwszego zbioru? (prawie dobrze napisałeś…): ((a >= 0) && (a < 50))

Czy należy do drugiego zbioru: ((a >=100) && (a<200))

Oraz różna od 150: (a != 150)

Teraz wystarczy te warunki odpowiednio połączyć operatorami logicznymi: lub, i

Podstawy logiki…