Nested loops de em c ++

Video: C++ Nested Loops Analysis and Cautions

O corpo de um ciclo pode conter em si uma loop- esta disposição é conhecida como loops aninhados. A espira interna tem de executar a conclusão durante cada vez através do circuito externo.

Um programa de C ++ utilizada nested loops para criar uma tabela de multiplicação da seguinte 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 * 7 1 * 6 1 * 8 1 * 92 2 * 0 2 * 1 * 2 * 3 2 2 2 * 4 2 * 5 2 * 6 2 * 7 * 2 8 2 * 9 // ... e assim por diante. ..

Você pode ver que a linha 0, o programa tem de iteração da coluna de 0 a coluna 9. O programa repete o processo para a linha 1, novamente para a linha 2, e assim por diante direita até a linha 9. Isto implica a necessidade de dois loops : um anel interior para repetir as colunas e uma segunda espira externa para interagir sobre as linhas.

Cada posição na tabela é simplesmente o número de vezes consecutivas o número da coluna.

Isto é exatamente como o seguinte NestedLoops programa funciona:

Video: C++ Part 44 - Nested for Loops

//// NestedLoops - este programa usa um loop aninhado para // calcular o table.//#include multiplicação #incluir #incluir usando espaço de nomes std-int principal (int nNumberofArgs, char * pszArgs []) {// exibir o headingsint coluna nColumn = 0-cout lt; lt; ""-Ao (nColumn lt; 10) {// definir a largura de exibição de dois caracteres // (mesmo para um número de dígitos) cout.width (2) - // agora mostrar o numbercout coluna lt; lt; nColumn lt; lt; " "- // incremento para o próximo columnnColumn ++ -} cout lt; lt; endl - // agora vai percorrer o rowsint nrow = 0-while (nrow lt; 10) {// inicia com o valuecout linha lt; lt; nrow lt; lt; " - "- // agora para cada linha, comece com a coluna 0 e // percorrer coluna 9nColumn = 0-while (nColumn lt; 10) {// exibir o produto da coluna de linha * // (2 caracteres de utilização, mesmo quando o produto é um único dígito //) cout.width (2) -cout lt; lt; nrow * nColumn lt; lt; " "- // ir para a próxima columnnColumn ++ -} // ir para a próxima rownRow ++ - cout lt; lt; endl -} // espera até que o usuário está pronto antes de terminar o programa // para permitir que o usuário veja o resultscout programa lt; lt; "Pressione Enter para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - 0-} retornar

A primeira secção cria os cabeçalhos das colunas. Esta seção inicializa nColumn a 0. Em seguida, ele itera nColumn imprimir o seu valor separados por um espaço até nColumn chega a 10. Neste ponto, o programa sai do primeiro loop e, em seguida, tachas uma nova linha no final para terminar a linha. A figura ilustra este processo graficamente.



Executando apenas nesta seção sozinho gera o seguinte resultado:

0 1 2 3 4 5 6 7 8 9

Video: Visual C++ 2010 Tutorial 17 - Nesting Loops

A expressão cout.width (2) define a largura visor a duas colunas - almofada C ++ vontade um espaço no lado esquerdo para números de um dígito.

O segundo conjunto de loops, os loops aninhados, começa às nrow igual a 0. O programa imprime o número da linha seguido por um traço antes de lançar em um segundo ciclo que começa nColumn a 0 e novamente itera-lo de volta para 9. Para cada passagem através deste circuito interno, o programa define a largura da saída de dois espaços e exibe nrow * nColumn seguido por um espaço.

Video: C Programming Tutorial - 39: Nested Loops

A largura de exibição redefine-se cada vez que você imprimir algo, por isso é necessário para configurá-lo de volta para 2 de cada vez antes de emitir um número.

O programa gera uma nova linha para mover saída para a próxima linha cada vez que incrementa nrow. Isso é mostrado graficamente aqui:

A saída deste programa aparece da seguinte forma:

 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 Enter para continuar. . .

Não há nada mágico sobre 0 a 9 nesta tabela. Você poderia apenas ter facilmente criado uma tabela de multiplicação de 12 x 12 (ou qualquer outra combinação) alterando a expressão de comparação entre os três enquanto rotações. No entanto, para qualquer coisa maior do que 10 x 10, você precisa aumentar a largura mínima para acomodar produtos de três dígitos: Use cout.width (3).


Publicações relacionadas