Bucles anidados en c ++

El cuerpo de un bucle puede contener en sí un loop- esta disposición se conoce como bucles anidados. El bucle interno debe ejecutar hasta su finalización en cada momento a través del bucle exterior.

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

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 * 8 1 1 2 * 92 * 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 de la columna 0 a través de la columna 9. El programa se repite el proceso para la fila 1, de nuevo por la fila 2, y así sucesivamente hasta en la fila 9. Esto implica la necesidad de dos bucles : un bucle interno para iterar sobre las columnas y un segundo bucle externo 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 NestedLoops programa funciona:

//// NestedLoops - este programa utiliza un bucle anidado a // calcular la tabla de multiplicar .//# incluye #include #include using namespace principal (int nNumberofArgs, char * pszArgs []) {// mostrar la headingsint columna-std int nColumn = 0-cout lt; lt; "" -mientras (nColumn lt; 10) {// establecer el ancho de la pantalla de dos caracteres // (incluso para los 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 van bucle a través del rowsint nRow = 0-tiempo (nRow lt; 10) {// comenzar con el valuecout fila lt; lt; nRow lt; lt; "-" - // Ahora para cada fila, comenzar con la columna 0 y // pasar por la columna 9nColumn = 0-tiempo (nColumn lt; 10) {// mostrar el producto de la columna * fila // (utilice 2 caracteres, incluso cuando el producto es // un solo dígito) cout.width (2) -cout lt; lt; nRow * nColumn lt; lt; "" - // Ir a la próxima columnnColumn ++ -} // ir al siguiente rownRow ++ - cout lt; lt; endl -} // espera hasta que el usuario está listo antes de finalizar el programa // para que el usuario pueda ver el resultscout programa lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - volver 0-}

La primera sección crea los encabezados de columna. 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 gráficamente este proceso.

imagen0.jpg

Ejecutar sólo esta sección solo genera el siguiente resultado:

0 1 2 3 4 5 6 7 8 9

la expresión cout.width (2) ajusta el ancho de la pantalla a dos columnas - pad C ++ voluntad de un espacio a la izquierda para 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 seguido de un guión antes de lanzarse a un segundo ciclo que se inicia nColumn a 0 de nuevo y repite una copia de seguridad a 9. Para cada paso a través de este lazo interno, el programa establece el ancho de salida a dos espacios y luego muestra nRow * nColumn seguido por 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 antes de cada salida de un número.

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

image1.jpg

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 este cuadro. Sólo podría haber creado fácilmente una tabla de 12 x 12 de multiplicación (o cualquier otra combinación) cambiando la expresión de comparación entre 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).




» » » » Bucles anidados en c ++