Instrukcje break i continue

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

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?

mała rada:

zamiast np. “k = k + 1” pisz “k++” :wink:

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

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:

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

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?

aa już wiem :o :o :o bo on najpierw drukuje a potem sprawdza, dzieki fakt to było śmiesznie proste :slight_smile: