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

Lekcja 13 zagnieżdznianie warunków

Ostatnio zmodyfikowano 2012-09-08 21:24
Autor Wiadomość
marek8
Temat założony przez niniejszego użytkownika
Lekcja 13 zagnieżdznianie warunków
» 2012-09-04 19:56:25
wpisując liczbe 20 program wypisuje pierwsze cztery spełnione warunki , a wpisujac 3 powinien wypisac 5 i 6 warunek jako spełniony a nie wypisuje ich ?
dzięki

#include <iostream>
using namespace std;
int main()
{

     cout << " Podaj liczbe calkowita :\n" <<  endl;
     int liczba;
     cin >> liczba;

    if( liczba >= 10 )
    {
        cout << "Liczba jest >= 10" << endl;
        if( liczba <= 50 )
        {
            cout << "Liczba jest <= 50" << endl;
            if( liczba <= 100 )
                {
                    cout << "Liczba jest <= 100" << endl;

                    if( liczba >= 20 )
                    {
                        cout << "Liczba jest >= 20" << endl;

                     if( liczba <= 4 )
                        {
                            cout << "Liczba jest <= 4" << endl;

                                if( liczba <= 8 )
                                    {
                                cout << "Liczba jest <= 8" << endl;
                            }
                        }
                    }
                }
            }

        }

    cout << "Koniec" << endl;
    return 0;
}
P-64374
Dragonit
» 2012-09-04 20:39:03
No wcale się nie dziwię :) Żeby sprawdzić ten ostatni warunek to u ciebie muszą się zgadzać poprzednie warunki itd. Pomyśl jak to może być dobrze.
P-64375
mostrom
» 2012-09-04 20:39:48
Uruchom mózg i zastanów się nad kolejnością Twoich warunków.
Tip: jeśli dajesz warunek że liczba jest mniejsza niż coś, to lecisz od najwyższego, dopiero w następnym warunkujesz wartością niższą.
P-64376
RazzorFlame
» 2012-09-06 14:59:40
Myślisz poważnie?
C/C++
if( liczba >= 20 )
{
    cout << "Liczba jest >= 20" << endl;
   
    if( liczba <= 4 )
Co to jest?
"Jeśli liczba jest większa lub równa 20 wtedy jeśli jest mniejsza niż 4 wykonaj coś tam" Powiedz mi jakim cudem liczba może być większa od 20 i mniejsza od 4?
P-64437
marek8
Temat założony przez niniejszego użytkownika
do RazzorFlame
» 2012-09-08 20:40:41
wychodzi na to ze źle to rozumiem zagnieżdżanie
czyli nie jest to tak jak w komentarzach ?

#include <iostream>
using namespace std;
int main()
{

     cout << " Podaj liczbe calkowita :\n" <<  endl;
     int liczba;
     cin >> liczba;

    if( liczba >= 10 )
    {
        cout << "Liczba jest >= 10" << endl;  /* jeżeli liczba wpisana to 20 to ten warunek jest spełniony więc program wypisuje linie "Liczba jest >= 10" a jesli wpiszę 4 to jest tak ze program nie napisze tej linii,  tak ? */

        if( liczba <= 50 )
        {
            cout << "Liczba jest <= 50" << endl; /* jeżeli liczba wpisana to 20 to ten warunek jest spełniony więc program wypisuje linie "Liczba jest <=50 " a jesli wpiszę 4 to warunek tez jest spełniony więc ze program tez powinien napisac tą linię poniewaz 4 <= 50,  tak ?  a nie pisze, dlaczego nie wiem */
            if( liczba <= 100 )
                {
                    cout << "Liczba jest <= 100" << endl; // podobna sytuacja tutaj zarówno 20 jak i 4 spełnia warunek  <= 100 a komentarz   wyświetla sie przy 20 a przy 4 nie //

                    if( liczba >= 20 )
                    {
                        cout << "Liczba jest >= 20" << endl; // ta linia powinna sie wyswietlac tylko ( a  nie 4)  przy wpisaniu 20 jest wiec  ok //

                     if( liczba <= 4 )
                        {
                            cout << "Liczba jest <= 4" << endl; /* ta linia przy wpisaniu 20 nie wyswietla sie a przy 4 rowniez  nie wyswietla sie a wg tego jak zrozumiałem lekcje 13  przy wpisaniu 4 powinna sie wyswietlic ta linia , poniewaz 4 <= 4 */

                                if( liczba <= 8 )
                                    {
                                cout << "Liczba jest <= 8" << endl; /* podobna sytuacja jak we wczesniejszej linii- przy 20 nie wyswietla sie a przy 4 chyba powinna sie wyswietlic poniewaz 4 jest <= 8 przeciez */
                            }
                        }
                    }
                }
            }

        }

    cout << "Koniec" << endl;
    return 0;

gdzie tkwi bład mojego zrozumienia lekcji ?
czy te warunki musza być spełnione po kolei od góry zeby przechodził do sprawdzania i wykonywania dalszych ?

P-64630
marek8
Temat założony przez niniejszego użytkownika
do Mostrom
» 2012-09-08 20:50:32
"Uruchom mózg i zastanów się nad kolejnością Twoich warunków.
Tip: jeśli dajesz warunek że liczba jest mniejsza niż coś, to lecisz od najwyższego, dopiero w następnym warunkujesz wartością niższą."

a jezeli  daje warunek ze liczba jest wieksza niz cos to lece od najniższego ?
P-64633
Mrovqa
» 2012-09-08 20:51:03
czy te warunki musza być spełnione po kolei od góry zeby przechodził do sprawdzania i wykonywania dalszych ?
W Twoim przypadku tak - bo je zagnieżdżasz. Gdybyś je ustawił jedno po drugim, to nie musiałyby być spełnione poprzednie warunki:
C/C++
if( a < 5 )
{
    cout << "a<5";
    if( a > 10 ) cout << "tu nigdy nie dojdziemy :(";
   
}
//--------
if( a < 5 )
{
    cout << "a<5";
}
if( a > 10 ) cout << "ale tu juz mozemy ;)";


Rozumiesz? Patrz na klamry, to co jest w nie ujęte należy do bloku kodu wykonywanego tylko wtedy, gdy zostanie spełniony warunek przed tym blokiem.
P-64634
marek8
Temat założony przez niniejszego użytkownika
do mostrom
» 2012-09-08 21:12:04
leci teraz od najwyzszego przy stwierdzeniu ze liczba jest <=

ale dalej nie wypisuje przy liczbie 20 ze jest >=20 i >=10 tylko pisze samo  <=100 i <=50
jak ten programik powinien wygladacc zeby :
-przy wpisaniu 20 napisał cztery linijki tzn. ze 20 jest <= 100 oraz <= 50  oraz >= 10 i >= 20
- przy wpisaniu 4 napisał  cztery linijki ze 4 jest <= 100 <= 50  <= 8  i  <= 4

dzieki


#include <iostream>
using namespace std;
int main()
{

     cout << " Podaj liczbe calkowita :\n" <<  endl;
     int liczba;
     cin >> liczba;


        if( liczba <= 100 )
        {
            cout << "Liczba jest <= 100" << endl;

                if( liczba <= 50 )
                {
                    cout << "Liczba jest <= 50" << endl;

                        if( liczba <= 8 )
                        {
                            cout << "Liczba jest <= 8" << endl;

                                if( liczba <= 4 )
                                    {
                                cout << "Liczba jest <= 4" << endl;

                            }   if( liczba >= 20 )
    {
                                cout << "Liczba jest >= 20" << endl;

                                if( liczba >= 10 )
                    {
                        cout << "Liczba jest >= 10" << endl;
                        }
                    }
                }
            }

        }

    cout << "Koniec" << endl;
    return 0;
}

P-64642
« 1 » 2
  Strona 1 z 2 Następna strona