instrukcja if

R7
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:7
0

Witam oto mój program
#include <iostream>

using namespace std;

int main()
{
int liczba;
cout <<"podaj liczbe"<<endl;
cin>> liczba;
cin.ignore();
if(liczba<10)
cout<<"liczba jest w pierwszej 10";

else if (10<liczba<20){
cout<<"liczba jest w drugiej 10";}
else if
(20<liczba<30)
{cout<<"liczba jest w trzeciej 10";}
else cout<<"NIE MA";
return(0);
}

czego gdy wpisuję np 45,24 nie wyswietla mi się komunikat liczba jest w trzeciej 10";

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 dni
1

if (10<liczba<20 ) oznacza if(((10<liczba)&&(1<20))||((10>=liczba)&&(0<20)))

Kopiuj
if(liczba<0) cout<<"liczba poza zakresem";
 else if(liczba<10) cout<<"liczba jest w pierwszej 10";
 else if (liczba<20) cout<<"liczba jest w drugiej 10";
 else if(liczba<30)  cout<<"liczba jest w trzeciej 10";
 else cout<<"liczba poza zakresem";

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
R7
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:7
0

ok dzięki
ale mam pytanko cyfra 15 pasuje również do trzeciej 10
czego nie będzie również komunikatu "liczba pasuje do 3 10"

edytowany 2x, ostatnio: ramzess77
kq
Ponieważ w else/else if możesz wejść wyłącznie jeśli nie wszedłeś w żaden z poprzednich warunków. Jeśli wejdziesz to przyszłe nawet nie są sprawdzane.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 dni
2

Wpisz słowo else w google translator


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
R7
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:7
0

to jest fragment książki jak ma się do tego odnieść czy if tylko nie pomija instrukcji w funkcjach prawda fałsz:

instrukcji if w linii 17. otrzymalibyśmy wynik false, co spowodowałoby że linia 18. nie
zostałaby wykonana. Test w linii 20. miałby wartość true, więc wykonana zostałaby instrukcja w
linii 22.. Następnie zostałaby wykonana instrukcja if w linii 25. i jej wynikiem byłoby false
(jeśli wynikiem w linii 17. była prawda). Tak więc program pominąłby cały blok, aż do linii 39.
Ten przykład ilustruje że otrzymanie wyniku true w jednej z instrukcji if nie powoduje
zaprzestania sprawdzania pozostałych instrukcji if.

edytowany 1x, ostatnio: ramzess77
lisu1411
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Biała
  • Postów:29
0

1. Jeżeli masz:

Kopiuj
if (warunek1) instrukcja1;
    else if (warunek2) instrukcja2;

to jeżeli warunek1 zostanie spełniony to warunek2 nie jest brany pod uwagę.

2. Jeżeli masz pętle zagnieżdżone , np:

Kopiuj
if (warunek1) instrukcja1;
    else if (warunek2) instrukcja2;
    else if (warunek3) instrukcja3;

to jeżeli warunek1 jest spełniony to nie są brane pod uwagę warunki 2,3.

3. Jeżeli masz dwie pętle niezależne, np:

Kopiuj
if (warunek1) instrukcja1;
if (warunek2) instrukcja2;

to fakt, że warunek1 jest spełniony czy nie, nie wpływa na pętlę z warunkiem2.

edytowany 1x, ostatnio: lisu1411
kq
Za taką indentację kodu to tylko za jaja powiesić...
lisu1411
Mam nadzieję, że teraz jest troszkę lepiej :(
R7
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:7
0

"to fakt, że warunek1 jest spełniony czy nie, nie wpływa na pętlę z warunkiem2."
nie do końca rozumiem

edytowany 1x, ostatnio: ramzess77
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 dni
  • Lokalizacja:Szczecin
1
ramzess77 napisał(a):

"to fakt, że warunek1 jest spełniony czy nie, nie wpływa na pętlę z warunkiem2."
nie do końca rozumiem
Nic dziwnego, kolega pomylił pętlę z warunkiem.

Może ten przykład pomoże. Idąc na zakupy z jajkami i cukrem na liście, możesz zobrazować Twoje postępowanie w następujący sposób:

Kopiuj
if(jajkaSaWsklepie){
	kupJajka();
}

if(cukierJestWSklepie){
	kupCukier();
}

Kupno cukru nie jest w żaden sposób uzależnione od kupna jajek. Ot, dwa zupełnie różne warunki.

Teraz weźmy pod uwagę inną sytuację. Przepaliła Ci się żarówka i idziesz do sklepu z zamiarem kupna nowej (pomińmy na razie zakazy UE). Poszukujesz 120W, ale 100W też mogą być, jeśli lepszych nie ma. W takim razie postępujesz tak:

Kopiuj
if(dostepneZarowki >= 120W){
	kup120W();
}else if(dostepneZarowki >= 100W){
	kup100W();
}else{
	napiszSkargeNaZaopatrzenieSklepu();
	idzDoKonkurencji();
}

W tym przypadku, jeśli jest dostępna żarówka 120W to nawet nie sprawdzasz, czy 100W również są - nie wspominając już o dokonywaniu takiego zakupu.


spartanPAGE
Chociaż trochę głupio to brzmi, na pierwszy rzut oka jest to jeśli ilość dostępnych żarówek jest większa niż 120W...
kq
To prawda, ale starałem się iść w stronę czytelności dla nowicjusza, a nie pełnej poprawności logicznej wyrażenia. Btw, kto wie, może w C++17 czy 2x wprowadzą typy SI jako literale, wtedy 100W będzie miało sens ;)
R7
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 10 lat
  • Postów:7
0

czyli w tym pierwszym przykładzie cukier jajka program wykona 1 i 2 instrukcję ?

a jeśli chodzi o drugi przykład dzięki za przejrzyste wytłumaczenie

edytowany 1x, ostatnio: ramzess77
kq
czyli w tym pierwszym przykładzie cukier jajka program wykona 1 i 2 instrukcję ? tak.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.