Ciclos anidados

Iniciado por naiken, 5 Enero 2019, 22:33 PM

0 Miembros y 1 Visitante están viendo este tema.

naiken

Hola buenas tardes, empecé a practicar sobre programación y me topo con este programa:

Utilizando ciclos anidados generar las siguientes parejas de enteros:

0   1
1   1
2   2
3   2
4   3
5   3
6   4
7   4
8   5
9   5

Y no me lo genera :/ estuve pensando bastante tiempo y nada ...
Aquí está mi código:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

main()
{
    int i,j;

    for(i=0;i<=9;i++)
    {
        cout<<"\t"<<i<<" ";


        for(j=1;j<=5;j++)
        {
            cout<<" "<<j<<endl;
        }
    }



}


Soy nueva en esto y por supuesto que lo intento pero por más que analizo no doy... Si alguien puede apoyarme en qué error tengo o algo lo agradecería mucho. 

Beginner Web

#1
Algo asi?
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

main()
{
int k=0, l=1;
for(int i=0; i<1; i++){
for (int j=0; j<=99999; j++){
cout<<j<<","<<i+l<<endl;
    k++;
    if(k==2){
    l+=1;
    k=0;
    }
}
   }
}
  :huh:
7w7

MAFUS

No se puede realizar con ciclos anidados pues cada vez que el ciclo exterior avanza una vez el interior hace todo el recorrido.

Esto tiene cara de un único ciclo con dos variables.

naiken

Cita de: Beginner Web en  6 Enero 2019, 00:06 AM
Algo asi?
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

main()
{
int k=0, l=1;
for(int i=0; i<1; i++){
for (int j=0; j<=99999; j++){
cout<<j<<","<<i+l<<endl;
    k++;
    if(k==2){
    l+=1;
    k=0;
    }
}
   }
}
  :huh:

Siiiiii!!!! el único detalle de tu código era la limitante de i , en vez de 99999 es 9 que es hasta donde llegará la serie :D te agradezco mucho !!!!! GRACIAS!!!!

MAFUS

Pero aquí lo de bucle anidado es porqué hay dos for, pero el del i es cómo si no existiera.

Lo vemos
#include <stdio.h>

int main() {
   int k=0, l=1;
   for (int j=0; j<=9; j++) {
       printf("%d,%d\n", j, l);
       k++;
       if(k==2) {
           l++;
           k=0;
       }
   }
}

CalgaryCorpus

Una posibilidad de solucion, alternativa a lo que ya se ha dicho, es tomar el numero de la segunda columna para iterar, y hacer unroll del primer ciclo, asi:


int main() {
    int i = 0;
    for (int j = 1; j <= 5; j++) {
        printf("%d,%d\n", i++, j);
        printf("%d,%d\n", i++, j);
    }
}
Aqui mi perfil en LinkedIn, invitame un cafe aqui

CalgaryCorpus

Y usando el primer numero, sin variables adicionales:


int main() {
   for (int i = 0; i <= 9; i++) {
       printf("%d,%d\n", i, (i+2) / 2);
   }
}
Aqui mi perfil en LinkedIn, invitame un cafe aqui