Wyjaśnić jak działa kod

0

wkleilam ten kod w code blocks i wyskoczyły liczby 15,25,31,34,35 -> z kodu rozumiem że jeśli x=5 to tych liczb będzie 5, ale ktoś mógłby mi wyjaśnić co się dzieje tu linijka po linijce?

int main()
 {int l=0;
for(int x=5; x; x--) 
{for(int y=x; y; y--)
for(int z=y; z; z--)
l++;
cout << l << endl;}}
2

Pomoge Ci i sformatuje za Ciebie kod, teraz opisz co robia poszczegolne linie, i napisz czego nie rozumiesz, ale zanim to zrobisz, przeczytaj dokumentacje do petli for...

Petla for: https://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
Funkcje http://drzewniak.slupsk.pl/~ks/c/c_033.html
Operator inkrementacji(x++): http://drzewniak.slupsk.pl/~ks/c/c_008.html

int main()
{
    int l=0;
    for(int x=5; x; x--) {
        for(int y=x; y; y--)
            for(int z=y; z; z--)
                l++;
        cout << l << endl;
    }
}
0

@daniel1302:

int main() - tu zaczynam program tak?
{
    int l=0; - wprowadzam zmienną l, która na początku jest 0 
    for(int x=5; x; x--) { -> pętla zaczynająca się od x=5, kończąca się na x, zmniejszająca się o 1
        for(int y=x; y; y--) w pętli która wprowadziła x wprowadzamy jeszcze y i z ale nie mam pojęcia na jakiej zasadzie to działa
            for(int z=y; z; z--)
                l++; - zwiększam l o 1? 
        cout << l << endl; - pokazuje l na ekranie
    }
}
0

Możesz wyświetlić sobie wszystkie zmienne i ich wartości w każdym kroku działania pętli.
Nie musisz zgadywać co się dzieje, możesz to zaobserwować.

0

@youmound: Muszę zgadywać, bo egzamin z tego przedmiotu polega na widzeniu "w głowie" co po kolei robi program.

0

Zgadywac nie mozesz, musisz zrozumiec jak program dziala, w ramach przygotowywania sie do egzaminu najlepiej wyswietlac sobie wszysttkie wartosci zeby zrozumiec wlasnie...

int main()
{
    int l=0;
    for(int x=5; x; x--) { 
        for(int y=x; y; y--)
            for(int z=y; z; z--)
                l++;
        cout << l << endl;
    }
}
for(int x=5; x; x--) { 

Petla for ma trzy parametry(wyrazenia) rozdzielone za pomoca srednika.

Pierwsze wyrazenie wykonuje sie raz, przed tym jak petla zaczyna dzialac. jest to int x=5. inicjuje ono zmienna x wartoscia 5.
Drugie wyrazenie x, to wyrazenie ktore sprawdza czy petla moze sie wykonywac kolejny raz (jesli jest rowne true to petla sie wykonuje). U ciebie jest x, jest to w uproszczeniu zapis ktory odpowiada x==true, a x == true jesli jest rozny od 0...
Ostatnie trzecie wyrazenie, u Ciebie x-- wykonuje sie zawsze na koncu iteracji, i zmniejsza ono x o 1.

Zobacz jak dziala Twoj program tutaj: https://wandbox.org/permlink/Du46np3YvXqicUku

0

A może nawet tak?

int main()
{
    int l=0;
    for(int x=5; x; x--) 
    {
        cout << "x = " << x << endl;
        for(int y=x; y; y--)
        {
            cout << "    y = " << y << endl;
            for(int z=y; z; z--)
            {
                cout << "        z = " << z << endl;
                l++;
                cout << "        l = " << l << endl;
            }
        }
        cout << "l = " << l << endl;
    }
}

Drukujemy zmienną za każdym razem, gdy się zmienia

https://wandbox.org/permlink/pD3Z93qyadXUD2vw

1 użytkowników online, w tym zalogowanych: 0, gości: 1