Bucles anidados en c ++

Video: Tutorial de C++ en Español # 25 - Ciclos Anidados

El cuerpo de un bucle puede contener en sí mismo un loop- esta disposición se conoce como bucles anidados. El bucle interior debe ejecutar a la terminación durante cada vez a través del bucle exterior.

Un programa C ++ utiliza bucles anidados para crear una tabla de multiplicar en la siguiente forma:

01234567890 0 * 0 0 * 1 0 * 2 0 * 3 0 * 4 0 * 5 0 * 6 0 * 7 0 * 8 0 * 91 1 * 0 1 * 1 1 * 2 1 * 3 1 * 4 1 * 5 1 * 6 1 * 7 * 1 8 1 * 92 2 * 0 2 * 1 2 * 2 2 * 3 * 2 4 2 * 5 * 2 6 2 * 7 * 2 8 2 * 9 // ... y así sucesivamente. ..

Se puede ver que para la fila 0, el programa tiene que recorrer desde la columna hasta la columna 0 9. El programa se repite el proceso para la fila 1, de nuevo por la fila 2, y así sucesivamente hasta la fila derecha 9. Esto implica la necesidad de dos bucles : un bucle interno para iterar sobre las columnas y un segundo bucle exterior para iterar sobre las filas.

Cada posición en la tabla es simplemente el número de veces consecutivas el número de columna.

Así es exactamente como la siguiente Bucles anidados programa trabaja:

//// NestedLoops - este programa utiliza un bucle anidado a // calcular la multiplicación table.//#include #incluir #incluir usando espacio de nombres std-int main (int nNumberofArgs, char * pszArgs []) {// mostrar la headingsint columna nColumn = 0-cout lt; lt; ""-mientras (nColumn lt; 10) {// establecer el ancho de la pantalla a dos caracteres // (incluso para números de un dígito) cout.width (2) - // ahora mostrar la numbercout columna lt; lt; nColumn lt; lt; " "- // incremento a la siguiente columnnColumn ++ -} cout lt; lt; endl - // ahora ir bucle a través de la rowsint nRow = 0-while (nRow lt; 10) {// comenzar con el valuecout fila lt; lt; nRow lt; lt; " - "- // ahora para cada fila, columna de comenzar con 0 y // ir a través de la columna 9nColumn = 0-tiempo (nColumn lt; 10) {// mostrar el producto de la columna * fila // (uso 2 caracteres incluso cuando el producto es // un solo dígito) cout.width (2) -cout lt; lt; nRow * nColumn lt; lt; " "- // ir al siguiente columnnColumn ++ -} // ir al siguiente rownRow ++ - cout lt; lt; endl -} // espera hasta que el usuario esté listo antes de finalizar el programa // para permitir al usuario ver el programa resultscout lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - volver 0-}

La primera sección crea los títulos de las columnas. En esta sección se inicializa nColumn a 0. A continuación, itera a través nColumn imprimir su valor separadas por un espacio hasta nColumn llega a 10. En este punto, el programa sale del primer bucle y luego vira una nueva línea en el extremo para terminar la fila. La figura ilustra este proceso gráficamente.

Video: Aprendiendo A Programar En C #11 - Ciclos For Anidados

La ejecución de esta sección simplemente por sí sola genera el siguiente resultado:

0 1 2 3 4 5 6 7 8 9

La expresion cout.width (2) establece el ancho de la pantalla a dos columnas - cojín C ++ voluntad un espacio en la izquierda de los números de un solo dígito.

El segundo conjunto de bucles, los bucles anidados, comienza a las nRow igual a 0. El programa imprime el número de fila seguida de un guión antes de lanzarse a un segundo bucle que comienza nColumn en 0 de nuevo y se itera una copia de seguridad a 9. Para cada paso a través de este bucle interior, el programa establece el ancho de salida a dos espacios y luego muestra nRow * nColumn seguido de un espacio.

El ancho de la pantalla se reinicia cada vez que algo de salida, por lo que es necesario establecer de nuevo a 2 cada vez antes de dar salida a un número.

El programa da salida a una nueva línea de moverse de salida a la siguiente fila cada vez que se incrementa nRow. Esto se muestra gráficamente aquí:

La salida de este programa aparece como sigue:

 0 1 2 3 4 5 6 7 8 90-0 0 0 0 0 0 0 0 0 01 - 0 1 2 3 4 5 6 7 8 92 - 0 2 4 6 8 10 12 14 16 183-0 3 6 9 12 15 18 21 24 274-0 4 8 12 16 20 24 28 32 365-0 5 10 15 20 25 30 35 40 456-0 6 12 18 24 30 36 42 48 547-0 7 14 21 28 35 42 49 56 638-0 8 16 24 32 40 48 56 64 729-0 9 18 27 36 45 54 63 72 81Press Intro para continuar. . .

No hay nada mágico en 0 a 9 en esta tabla. Se podía haber creado fácilmente una tabla de multiplicar 12 x 12 (o cualquier otra combinación) cambiando la expresión de comparación en los tres mientras bucles. Sin embargo, para algo más grande que 10 x 10, tendrá que aumentar el ancho mínimo para dar cabida a productos de tres dígitos: Uso cout.width (3).

Artículos Relacionados