Instrukcje break i continue


(Kruk I) #1

mam takie programy

int i, m;

int dlugosc_linii = 3;

for(i=0 ; i < 4 ; i = i + 1)

{

    for(m = 0 ; m < 10 ; m = m + 1)

   {

      std::cout << "*";

      if(m > dlugosc_linii)break;

    }

    std::cout << "\nKontynuujemy zewnetrzna petle"

                    << " for dla i = " << i << "\n";

}

po wykonaniu tego programu wypisuje co艣 takiego

ale czemu on wypisuje 5 gwiazdek skoro wyraznie pisze ze

m > dlugosc_linii

czyli powinno wypisac 7 :expressionless: drugi program

for(int k = 0 ; k < 12 ; k = k + 1)

{

   std::cout << "A";

   if(k > 1) continue;

   std::cout << "b\n";

}

wynik

no i o co chodzi jest

k < 12

a pojawilo sie 14 liter i czemu wypisalo AA... skoro potem kazde k > 1


(Sawyer47) #2

Wszystko przyk艂ady z Symfonii, gdzie wszystko jest klarownie opisane, wi臋c w czym problem?

1: dlugosc_linii to 3, wi臋c wypisuje dla m = 0, 1, 2, 3 (s膮 r贸wne), 4 wypisuje i dopiero teraz przerywa (4 > 3), czyli jest 5 w sumie.

2: Ech no co mam napisa膰? Wszystko pi臋knie obja艣nione w Symfonii C++, rzecz nie jest trudna. Wypisuje Ab i nowa linia dla k =0, to samo dla k = 1, a p贸藕niej warunek jest spe艂niony - k jest wi臋ksze od jeden. continue powoduje przej艣cie do nast臋pnej iteracji, czyli opuszczone zostaje wypisywanie "b\n".

Nie wiem co w tym trudnego?


(Mkow13) #3

ma艂a rada:

zamiast np. "k = k + 1" pisz "k++" :wink:


(Kruk I) #4

nr47 nie rozumiem czemu w programie z gwiazdkami "przerywa" po tym jak przyjmie warto艣膰 >3 i wypisuje j膮 a w drugim programie "przerywa" i nie przyjmuje ju偶 tej wi臋kszej warto艣ci

innymi s艂owy

II program

wypisuje Ab dla 0,1

jest 1>1 //to jest wed艂ug mnie dobrze

I program

wypisuje gwizadki dla 0,1,2,3,4

a jest 4>3 // czemu drukuje gwiazdk臋 r贸wnie偶 dla 4


(Sawyer47) #5
for(int k = 0 ; k < 12 ; k = k + 1)

{

   std::cout << "A";

   if(k > 1) continue;

   std::cout << "b\n";

}

P臋tle wykonuje 12 razy - dla k od 0 do 11.

Je偶eli k jest wi臋ksze od 1 przerwie wypisywanie "b" i znaku nowej linii.

Tak wi臋c dla k = 0, 0 nie jest wi臋ksze od 1 wi臋c wypisuje wszystko - "Ab\n"

k = 1, 1 nie jest wi臋ksze od 1, wi臋c wypisuje wszystko.

Dalej dla k od 2 do 11, k jest wi臋ksze od 1 wi臋c wypisuje samo "A", p贸藕niej instrukcja continue powoduje pomini臋cie dalszego cia艂a p臋tli.

Break natomiast powoduje zako艅czenie wykonywania p臋tli.

//No, m贸wi艂em, 偶e proste :stuck_out_tongue:


(Kruk I) #6

ciekaw jestem jak Ty sie tego nauczy艂e艣 skoro nie umiesz czyta膰 ze zrozumieniem

  1. wyt艂umaczy艂e艣 program kt贸ry w 100% rozumiem

...

  1. nie rozumiem czemu wypisuje 5 gwiazdek zamiast 4

PS

komentarze typu:

zachowaj dla siebie i nawet nie pr贸buj m贸wi膰, 偶e to po prostu "rada". Je艣li nie chcesz pom贸c 艂aski bez nigdy indywidualnie nie prosi艂em Cie o pomoc a tym bardziej o komentarz


(Airborn) #7

zaczynamy:

i=0

m=0

drukujemy *

sprawdzamy czy 0 > 3 nie wi臋c zwi臋kszamy m

m=1

drukujemy *

sprawdzamy czy 1 > 3 nie wi臋c zwi臋kszamy m

m=2

drukujemy *

sprawdzamy czy 2 > 3 nie wi臋c zwi臋kszamy m

m=3

drukujemy *

sprawdzamy czy 3 > 3 nie wi臋c zwi臋kszamy m

m=4

drukujemy *

sprawdzamy czy 4 > 3 tak, wi臋c wyskakujemy z p臋tli

wci膮偶 nie rozumiesz?


(Kruk I) #8

aa ju偶 wiem :o :o :o bo on najpierw drukuje a potem sprawdza, dzieki fakt to by艂o 艣miesznie proste :slight_smile: