[C++]o co tu chodzi?


(donata1234) #1

Witam, czy mógłby mi ktoś powiedzieć o co chodzi w tym programie?

Jak on ma działać?

    int x=2,i=0;
while(x<100)do
{
    i++
    x*=3,
}


(karnistery) #2

Edit. nie zauważyłem, że w warunku jest x, w takim razie x będzie wymnażany przez 3 dopóki będzie mniejszy niż 100, za każdym wymnożeniem program zwiększa wartość zmiennej i o 1


(Domker) #3

Masz pod “x” podstawione 2 pod “i” 0
Poniżej jest pętla while, gdzie do momentu, aż "x"będzie mniejsze od 100, będzie “i” za każdym przebiegiem pętli zwiększać się o “1”, a “x” będzie mnożone przez 3, a wynik podstawiany pod “nowe” “x”
(x*=3 to inaczej x = x * 3)

Pierwszy przebieg pętli:
i = 1 (i+1)
x = 6 (2 * 3)
6 (czyli x) mniejsze od 100, więc drugi przebieg pętli:
i = 2 (i+1)
x = 18 (6 * 3)

i tak dalej aż “x” nie będzie mniejsze od 100

Czyli pętla jeszcze wykona 2 przebiegi i “x” będzie miało wartość 162, a “i” wartość 4.


(nintyfan) #4

Ta inkrementacja i jest niepotrzebna.Program dodatkowo się nie skompiluje, gdyż występuje do za warunkiem - testowałeś to, co wrzuciłeś?


(Domker) #5

@nintyfan przypuszczam, że inkrementacja jest tu tylko dla zliczenia przebiegów pętli while :wink: Dostawisz:
std::cout << "Przebieg pętli " << i << ", Aktualnie x= " << x << '\n';

I masz na bieżąco przebieg działania pętli. :stuck_out_tongue:
“do” jest dodane, żeby pewnie nie wrzucić bezmyślnie w kompilator tylko troszeczkę pomyśleć.


(donata1234) #6

Jakby wyglądałaby ta pętla jako do-while?


(Domker) #7

Tak:

do {
    i++;
    x*=3;
} while(x<100);