Lop anidado de C ++ (con ejemplos)

En este tutorial, aprenderemos sobre los bucles anidados en C ++. Aprenderemos a usar bucles for, while y do… while anidados en un programa.

Un bucle dentro de otro bucle se denomina bucle anidado. Tomemos un ejemplo

Supongamos que queremos recorrer cada día de la semana durante 3 semanas.

Para lograr esto, podemos crear un ciclo anidado para iterar tres veces (3 semanas). Y dentro del ciclo, podemos crear otro ciclo para iterar 7 veces (7 días). Por ejemplo,

Ejemplo: anidado para bucle

 // C++ program to display 7 days of 3 weeks #include using namespace std; int main() ( int weeks = 3, days_in_week = 7; for (int i = 1; i <= weeks; ++i) ( cout << "Week: " << i << endl; for (int j = 1; j <= days_in_week; ++j) ( cout << " Day:" << j << endl; ) ) return 0; )

Salida

 Semana: 1 Día: 1 Día: 2 Día: 3… Semana: 2 Día: 1 Día: 2 Día: 3…… 

Podemos crear bucles anidados con while y do… while de forma similar.

Ejemplo: visualización de un patrón

 // C++ program to display a pattern // with 5 rows and 3 columns #include using namespace std; int main() ( int rows = 5; int columns = 3; for (int i = 1; i <= rows; ++i) ( for (int j = 1; j <= columns; ++j) ( cout << "* "; ) cout << endl; ) return 0; )

Salida

 * * * * * * * * * * * * * * * 

En este programa, el ciclo externo itera de i == 1a i == rows.

El bucle interno itera de j == 1a j == columns. Dentro del bucle interno, imprimimos el personaje '*'.

romper y continuar Inside Nested Loops

Cuando usamos una instrucción break dentro del ciclo interno, termina el ciclo interno pero no el ciclo externo. Por ejemplo,

 int weeks = 3, days_in_week = 7; for (int i = 1; i <= weeks; ++i) ( cout << "Week: " << i << endl; for (int j = 1; j <= days_in_week; ++j) ( // break during the 2nd week if (i == 2) ( break; ) cout << " Day:" << j << endl; ) )

Salida

 Semana: 1 Día: 1 Día: 2… Semana: 2 Semana: 3 Día: 1 Día: 2… 

Este programa no ejecuta el ciclo interno cuando el valor de i es, es 2decir, no imprime los días de la 2ª semana. El bucle exterior que imprime las semanas no se ve afectado.

De manera similar, cuando usamos una instrucción continue dentro del ciclo interno, se salta solo la iteración actual del ciclo interno. El bucle exterior no se ve afectado. Por ejemplo,

 int weeks = 3, days_in_week = 7; for (int i = 1; i <= weeks; ++i) ( cout << "Week: " << i << endl; for (int j = 1; j <= days_in_week; ++j) ( // continue if the day is an odd number if (j%2 != 0) ( continue; ) cout << " Day:" << j << endl; ) )

Salida

 Semana: 1 Día: 2 Día: 4 Día: 6 Semana: 2 Día: 2 Día: 4 Día: 6 Semana: 3 Día: 2 Día: 4 Día: 6

Este programa imprime solo aquellos días que son pares.

Siempre que days_in_week sea impar, la continuedeclaración omite esa iteración del ciclo interno.

Articulos interesantes...