elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ciclos anidados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ciclos anidados  (Leído 2,472 veces)
mikeluna

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ciclos anidados
« en: 14 Agosto 2017, 02:56 am »

Hola!! Estoy aprendiendo a usar los ciclos anidados, pero en realidad no entiendo qué hice jaja, ¿me podrían ayudar? El programa consiste en un juego, se supone que el usuario debe ingresar N numero de jugadores, X numero menor de 10  y Y rondas, por ejemplo si escojo 3 jugadores, un x=5 (esto significa que se debe mostrar en vez del numero un PUM para ese x=5, los multiplos de 5 y cualquier numero terminado en 5) y 10 rondas entonces el programa debe mostrar cuando se compila (N1=1, N2=2, N3=3, N1=4, N2=PUM, N3=6...) sin embargo tengo un fallo cuando se va a mostrar el número del jugador y el PUM, ¿cómo hago para que se muestren los jugadores así N1 N2 N1 N2, porque o el programa que hice muestra todos de un mismo N1 N1 N1 N1, o por si ejemplo el usuario escogio 3 jugadores, igualmente el programa muestra N1 N2 N3 N4 N5 N6 N7... Les agradeceria mucho si me ayudan


 
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.  
  8.    int n=1, x=1, y, z=0;
  9.    char* PUM="PUM";
  10.  
  11.    cout << "1. Ingrese el numero de jugadores a participar" << endl;
  12.    cin>>n;
  13.  
  14.    cout<< "2. Digite un numero menor que 10 y mayor que 0 para establecer el PUM"<<endl;
  15.    cin>>x;
  16.    while (x>=10)
  17.        {cout<<"La opcion ingresada no es valida"<<endl;
  18.        cout<< "2. Digite un numero menor que 10 y mayor que 0 para establecer el PUM"<<endl;
  19.        cin>>x;}
  20.  
  21.   cout<<"3. Digite la cantidad de rondas que quiere que tenga el juego"<<endl;
  22.    cin>>y;
  23.  
  24.    while (z<=y)
  25.       {for (n=1; n<=y; n=n+1)
  26.           {
  27.               z=z+1;
  28.             if(z==x)
  29.             cout<<"N"<<n<<"="<<PUM<<endl;
  30.             else if(z==z*x)
  31.             cout<<"N"<<n<<"="<<PUM<<endl;
  32.             else if(z==(10*z)+x)
  33.            cout<<"N"<<n<<"="<<PUM<<endl;
  34.             else if((z!=x)&&(z!=(10*z)+x)&&(z!=z*x))
  35.                cout<<"N"<<n<<"="<<z<<endl;
  36.  
  37. }
  38.       }
  39.    return 0;
  40. }
  41.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 14 Agosto 2017, 03:01 am por engel lex » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ciclos anidados
« Respuesta #1 en: 14 Agosto 2017, 03:56 am »

Un poco críptico ._.

Trata de ponerle a las variables nombres útiles. En vez de "y", "rondas", por ejemplo.

Luego, no sé de qué va el juego, pero fíjate en las condiciones de los if:
Código
  1. if(z==z*x)
La única posibilidad de que se cumpla eso, es que z sea 0 o que x sea 1. z no puede ser igual a 0, así que solo será verdadero cuando x sea 1.
El último else if sobra. Puedes poner directamente un "else" sin el if. Si ha llegado hasta ahí, es que no se han cumplido esas condiciones.

Luego, tienes un while y dentro el for. Fíjate que el z se incrementa dentro del for. Por tanto, va a ejecutarse el for completo 1 vez, y luego va a entrar 1 vez más. No sé cual pretendías que fuera la utilidad del while, pero no parece la correcta.

En fin, trata de entender el problema ydesmenuzalo como más obvio pueda ser.
¿Cuál es la "división" de mayor calibre? ¿Las rondas? Pues haz un for para cada ronda.
Dentro de este, querrás un for recorriendo cada jugador.
Luego, dentro, harás la lógica pertinente.


En línea

mikeluna

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ciclos anidados
« Respuesta #2 en: 14 Agosto 2017, 06:28 am »

Bueno, en realidad lo he cambiado, pero sigo teniendo el problema de cuando se muestra en el programa el número del jugador, o sea siempre se muestra N5 N5 N5 N5 N5 en vez de N1 N2 N3 N1 N2 N3 y así con cualquier número de jugadores que se escoja
Código:
#include <iostream>

using namespace std;

int main()
{

    int n=1, x=1, z=1;
    char* PUM="PUM";

    cout << "1. Ingrese el numero de jugadores a participar" << endl;
    cin>>n;

    cout<< "2. Digite un numero menor que 10 y mayor que 0 para establecer el PUM"<<endl;
    cin>>x;
        while (x>=10)
        {cout<<"La opcion ingresada no es valida"<<endl;
        cout<< "2. Digite un numero menor que 10 y mayor que 0 para establecer el PUM"<<endl;
        cin>>x;}

        for (z=1; z<=200; z=z+1)
    {

        if (z==x)
            cout<<"Jugador numero "<<n<<" ="<<PUM<<endl;
        else if (z%x==0)
            cout<<"Jugador numero "<<n<<" ="<<PUM<<endl;
        else if (z%10==x)
            cout<<"Jugador numero "<<n<<" ="<<PUM<<endl;
        else
            cout<<"Jugador numero "<<n<<" ="<<z<<endl;
    }



    return 0;
}
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ciclos anidados
« Respuesta #3 en: 14 Agosto 2017, 12:25 pm »

Estás mostrando n, que es el numero de jugadores. Va a ser siempre 5 en ese caso. Tienes que hacer un for para recorrer cada jugador. De 1 a n.

Y por cierto, la primera condición es redundante. Si es igual, también será divisible. Además, estaría bien que juntases la segunda y tercera condición con un or, asi evites repetir el código del cout.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema if's anidados
Programación C/C++
m@o_614 1 2,124 Último mensaje 27 Diciembre 2012, 03:45 am
por rir3760
Div anidados
Desarrollo Web
mapers 2 2,622 Último mensaje 18 Septiembre 2013, 07:24 am
por mapers
JdateChooser anidados
Java
FISH in the house 0 1,709 Último mensaje 21 Febrero 2017, 16:43 pm
por FISH in the house
como hacer este barco con ciclos anidados ayuddaaaaa por favor
Programación C/C++
silfer_1908 2 2,754 Último mensaje 30 Septiembre 2018, 14:08 pm
por 3n31ch
Ciclos anidados
Programación C/C++
naiken 6 3,842 Último mensaje 9 Enero 2019, 15:02 pm
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines