Zagnieżdżona pętla.
Ostatnio zmodyfikowano 2013-11-10 21:31
Soon Temat założony przez niniejszego użytkownika |
Zagnieżdżona pętla. » 2013-11-10 20:34:55 Witam! Napotkałem na swojej drodze nauki C++ kolejny płot do przeskoczenia - zagnieżdżone pętle. Nie wiem jak one działają, nie wiem w jakiej kolejności są wykonywane. Nie mogę zrozumieć nawet prostych przykładów takich jak ten: #include <iostream> using namespace std;
int main() { for( int j = 0; j < 20; ++j ) { for( int i = 0; i <= j; ++i ) cout << "X"; cout << endl; } }
W każdej kolejnej linii jest dodawany 1 X. Dlaczego? Od czego to zależy? Czy odpowiada za to iteracja ++i? Z góry dziękuję |
|
pekfos |
» 2013-11-10 20:47:01 A jakby to zapisać tak? #include <iostream> using namespace std;
void wypisz_n_plus_jeden_iksow( int n ) { for( int i = 0; i <= n; ++i ) cout << "X"; }
int main() { for( int j = 0; j < 20; ++j ) { wypisz_n_plus_jeden_iksow( j ); cout << endl; } } |
|
Soon Temat założony przez niniejszego użytkownika |
» 2013-11-10 20:59:52 Hmm... Ok, ale chciałbym się dowiedzieć, jak to działa dokładnie w zagnieżdżonych pętlach. Czy to jest dobra kolejność? 1. Przypisanie zmiennej j wartości 0; 2. Sprawdzany warunek j < 20; 3. Przypisanie i wartości 0; 4. Sprawdzany warunek i <= j (i = 0 oraz j = 0, więc warunek jest prawdziwy); 5. Wypisanie jednego X-a; 6. ++i; 7. ++j; 8. Teraz wartość obu zmiennych jest równa 1; 9. Wypisanie dwóch X-ów (i właśnie nie wiem dlaczego dwóch, później trzech... itd.); |
|
pekfos |
» 2013-11-10 21:09:52 To tak nie działa. Popatrz na kod, który podałem. Pętla w main() 20 razy wywołuje funkcję, podając coraz większe j. Funkcja wypisuje j+1 iksów. Jeszcze prostszy przykład: for( int a = 0; a < 10; ++a ) { for( int b = 0; b < 10; ++b ) { std::cout << a << " " << b << std::endl; } } Uruchom ten program i przeanalizuj wypisywane wartości. |
|
Soon Temat założony przez niniejszego użytkownika |
» 2013-11-10 21:31:49 Ahaaa... WIELKIE dzięki za pomoc. Wszystko jest tak proste, a człowiek sam nie może dojść. Naprawdę dziękuję. :) |
|
« 1 » |