0

Tengo que resolver el siguiente ejercicio:

Hacer el algoritmo que imprima los números pares entre 100 y 20 a razón de 6 por línea separados por 3 blancos

Como hago para mostrar de a 6 numeros por linea?. Lo que hice hasta el momento es lo siguiente:

#include <iostream>

using namespace std;

int main()
{
    int num;

    for (int i=20;i<=100;i++)
    { 

        num=i%2;

        if (num==0) { 
            printf("%d   ", i); 
        }
    }

    system("PAUSE");
    return 0;
}

Me falta la parte de poder mostrar de a 6 numeros por linea.

PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
Maca Igoillo
  • 79
  • 5
  • 12

3 Answers3

2

Podrías hacer algo así:

for (int i = 20, salto = 1; i < 100; i += 2, ++salto)
{
    std::cout << i << ' ';
    if (!(salto % 6))
        std::cout << '\n';
}

Un bucle for tiene tres componentes en su cabecera:

  1. Declaración de variables.
  2. Condición de salida.
  3. Instrucción de avance.

Lo que poca gente sabe es que en la declaración de variables puedes declarar tantas variables como quieras siempre que sean del mismo tipo, por ello hemos creado la variable para indexar (i) y la variable para contar cuándo tenemos que saltar de línea (salto).

Tampoco es muy conocido el hecho de que en la instrucción de avance puedes poner varias instrucciones separadas por coma, por eso en esa parte del bucle avanzamos de dos en dos la variable de índice y de uno en uno la variable de salto de línea.

Este último truco no es una característica del bucle for, si no el uso del operador coma (,). El operador coma ejecuta todas las instrucciones que se le pasen, las evalúa y las descarta (una explicación más detallada requeriría una nueva pregunta).

Información adicional.

Algunos detalles que te pueden ayudar.

  • Si te piden explícitamente los números pares, no tienes que avanzar los números uno a uno y comprobar si son pares: avanza de dos en dos y sabrás sin hacer comprobaciones que son pares.
  • La función printf pertenece a las librerías de C. Usa std::cout para mostrar cosas por pantalla.
  • Aunque no está prohibido, no es aconsejable el using namespace std;, consulta este hilo para más detalles.
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
0

Esta seria una solucion:

1) Creamos la variable contadorSalto; Esta contara cada vez que se encuentre un numero par y la incrementara de a 1.

2) Cuando la variable contadorSalto tenga el valor de 6, entonces imprimimos printf("\n"), para que haga un salto de linea, permitiendo asi imprimir los otros en la siguiente linea.

3) Cuando imprimimos el salto de linea, asignamos el valor de 0 a nuestro contador.

#include <iostream>

using namespace std;

int main()
{
    int num;
    int contadorSalto = 0; // Contador

    for (int i=20;i<=100;i++)
    { 
        num=i%2;

        if (num==0)
        { 
          printf("%d   ", i); 
          contadorSalto++;
        } 

        // Hacemos el salto de linea cada 6 numeros
        if(contadorSalto == 6){
           printf("\n");
           contadorSalto = 0;
        }
    }

    system("PAUSE");
    return 0;
}

Espero te ayude.

Ivan Botero
  • 6,513
  • 9
  • 33
  • 53
0

Podrías insertar un contador que cada 6 números, muestre un salto de linea.

#include <iostream>

using namespace std;

int main()
{
    int n=0;
    for (int i=20;i<=100;i++) { 
        if (i%2==0)  { 
            printf("%d   ", i);
            n=n+1;
        }
        if(n==5){
            n=0;
            printf("\n"); 
        }
    }

    system("PAUSE");
    return 0;
}
mrcone
  • 44
  • 3