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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


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

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Cambiar un Switch por un do-while
« en: 7 Julio 2012, 23:47 pm »

  Necesito cambiar este switch a un if-else do-while o for si que se puede xD, pero de ninguna forma me a resultado, alguna sugerencia?
Aqui esta el codigo completo...
  http://www.mediafire.com/?kdyjq36v5z62f9y
PD: esta en C (solito).

Código
  1. while(fin_juego != 0){
  2.        if (jugador == ficha_c){
  3.            printf ( "Turno del Computador\n" ) ;
  4.            jugada_ok = 1;
  5.            while (jugada_ok != 0){
  6.                jugada = rand()%9 +1;
  7.                switch ( jugada) {
  8.                    case 1:    if (t1 == 9){
  9.                        t1 = jugador; jugada_ok = 0;
  10.                            }
  11.                            break;
  12.                    case 2: if (t2 == 9){
  13.                                t2 = jugador;
  14.                                jugada_ok = 0;
  15.                            }
  16.                            break;
  17.                    case 3: if (t3 == 9){
  18.                                t3 = jugador;
  19.                                jugada_ok = 0;
  20.                            }
  21.                            break;
  22.                    case 4:    if (t4 == 9){
  23.                                t4 = jugador;
  24.                                jugada_ok = 0;
  25.                            }
  26.                            break;
  27.                    case 5:    if (t5 == 9){
  28.                                t5 = jugador;
  29.                                jugada_ok = 0;
  30.                            }
  31.                            break;
  32.                    case 6:    if (t6 == 9){
  33.                                t6 = jugador;
  34.                                jugada_ok = 0;
  35.                            }
  36.                            break;
  37.                    case 7:    if (t7 == 9){
  38.                                t7 = jugador;
  39.                                jugada_ok = 0;
  40.                            }
  41.                            break;
  42.                    case 8:    if (t8 == 9){
  43.                                t8 = jugador;
  44.                                jugada_ok = 0;
  45.                            }
  46.                            break;
  47.                    case 9:    if (t9 == 9){
  48.                                t9 = jugador;
  49.                                jugada_ok = 0;
  50.                            }
  51.                            break;
  52.                }
  53.            }


« Última modificación: 8 Julio 2012, 14:47 pm por Aprendiz-Oscuro » En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Cambiar un Switch por un do-while
« Respuesta #1 en: 8 Julio 2012, 00:03 am »

No he mirado el resto del código, pero para sustituir el switch por los if, sería así:

Código
  1. while(fin_juego != 0){
  2.        if (jugador == ficha_c){
  3.            printf ( "Turno del Computador\n" ) ;
  4.            jugada_ok = 1;
  5.            while (jugada_ok != 0){
  6.                jugada = rand()%9 +1;
  7.  
  8.                    if(jugada==1)
  9.                    {
  10.                        if (t1 == 9){
  11.                        t1 = jugador; jugada_ok = 0;
  12.                        }
  13.                    }  
  14.  
  15.                    else if(jugada == 2)
  16.                    {
  17.                        if (t2 == 9){
  18.                                t2 = jugador;
  19.                                jugada_ok = 0;
  20.                            }
  21.                    }
  22.  
  23.                    else if(jugada == 3)
  24.                    {
  25.                        if (t3 == 9){
  26.                                t3 = jugador;
  27.                                jugada_ok = 0;
  28.                            }
  29.                    }
  30.  
  31.                   else if(jugada == 4)  
  32.                   {
  33.                       if (t4 == 9){
  34.                                t4 = jugador;
  35.                                jugada_ok = 0;
  36.                            }
  37.                   }
  38.  
  39.  
  40.                    else if(jugada == 5)
  41.                    {
  42.                         if (t5 == 9){
  43.                                t5 = jugador;
  44.                                jugada_ok = 0;
  45.                            }
  46.                    }
  47.  
  48.  
  49.                   else  if(jugada == 6)  
  50.                    {
  51.                        if (t6 == 9){
  52.                                t6 = jugador;
  53.                                jugada_ok = 0;
  54.                            }
  55.                    }
  56.                   else if(jugada == 7)
  57.                    {
  58.                        if (t7 == 9){
  59.                                t7 = jugador;
  60.                                jugada_ok = 0;
  61.                            }
  62.                    }
  63.                   else if(jugada == 8)
  64.                    {
  65.                         if (t8 == 9){
  66.                                t8 = jugador;
  67.                                jugada_ok = 0;
  68.                            }
  69.                    }
  70.  
  71.                  else if(jugada == 9)
  72.                   {
  73.                       if (t9 == 9){
  74.                                t9 = jugador;
  75.                                jugada_ok = 0;
  76.                        }
  77.                     }  
  78.                }

Saludos.


En línea

anonimo3.0

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Cambiar un Switch por un do-while
« Respuesta #2 en: 8 Julio 2012, 00:29 am »

No funciona, cae en un ciclo repetitivo  :o me pide que ingrese el numero de casilla todo el tiempo, pero sin hacer nada


« Última modificación: 8 Julio 2012, 14:48 pm por Aprendiz-Oscuro » En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Cambiar un Switch por un do-while
« Respuesta #3 en: 8 Julio 2012, 00:34 am »

¿Lo has colocado bien dentro del código? Ese if-else, que yo sepa, es el equivalente al switch...

Quizá esté confundido... Seguiré mirando y ahora te digo.

Saludos!
« Última modificación: 8 Julio 2012, 00:46 am por DickGumshoe » En línea

anonimo3.0

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Cambiar un Switch por un do-while
« Respuesta #4 en: 8 Julio 2012, 00:39 am »

  No lo copie y pegue porque le tengo otras variables xD, asi que no creo que sea eso

Código
  1. while(fin_juego != 0){
  2.        if (jugador == computador) {
  3.            printf ( "Turno del Computador\n" ) ;
  4.            jugada_ok = 1;
  5.            while (jugada_ok != 0){
  6.                srand(time(NULL));
  7.                jugada = rand()%9 +1;
  8.                   if(jugada==1) {
  9.                    if (n1 == 9){
  10.                      n1 = jugador;
  11.                      jugada_ok = 0; }
  12.                   }
  13.                   else if(jugada==2) {
  14.                    if (n2 == 9){
  15.                        n2 = jugador;
  16.                        jugada_ok = 0; }
  17.                     }
  18.                   else if(jugada==3) {
  19.                    if (n3 == 9){
  20.                        n3 = jugador;
  21.                        jugada_ok = 0; }
  22.                      }
  23.                   else if(jugada==4) {
  24.                    if (n4 == 9){
  25.                        n4 = jugador;
  26.                        jugada_ok = 0; }
  27.                       }
  28.                   else if(jugada==5) {
  29.                    if (n5 == 9){
  30.                        n5 = jugador;
  31.                        jugada_ok = 0; }
  32.                        }
  33.                   else if(jugada==6) {
  34.                    if (n6 == 9){
  35.                        n6 = jugador;
  36.                        jugada_ok = 0; }
  37.                        }
  38.                   else if(jugada==7) {
  39.                    if (n7 == 9){
  40.                        n7 = jugador;
  41.                        jugada_ok = 0; }
  42.                        }
  43.                   else if(jugada==8) {
  44.                    if (n8 == 9){
  45.                        n8 = jugador;
  46.                        jugada_ok = 0; }
  47.                        }
  48.                   else if(jugada==9) {
  49.                    if (n9 == 9){
  50.                        n9 = jugador;
  51.                        jugada_ok = 0; }
  52.                        }
  53.            }
« Última modificación: 8 Julio 2012, 14:46 pm por Aprendiz-Oscuro » En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Cambiar un Switch por un do-while
« Respuesta #5 en: 8 Julio 2012, 00:43 am »

No, me he confundido... Seguiré mirando, pero CREO (no me gusta asegurar las cosas), que era el primer código que te pasé...

Cuando llegue a alguna conclusión te digo.

Saludos!
En línea

Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Cambiar un Switch por un do-while
« Respuesta #6 en: 8 Julio 2012, 00:48 am »

anonimo3.0, tienes mal planteado el algoritmo. Yo lo que haría sería un array y quedaría algo como esto:

Código
  1. while(fin_juego != 0){
  2.        if (jugador == ficha_c){
  3.            printf ( "Turno del Computador\n" ) ;
  4.            jugada_ok = 1;
  5.            while (jugada_ok != 0)
  6. {
  7.                jugada = rand() % 9;
  8. if (t[jugada] == 9){
  9. t[jugada] = jugador;
  10. jugada_ok = 0;
  11. }
  12. }          
  13.            }
  14. }
  15.  

Más simple, ¿verdad?

Lo que no entiendo es para que haces el bucle while de jugada_ok...

Saludos.
« Última modificación: 8 Julio 2012, 00:51 am por Khronos14 » En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Cambiar un Switch por un do-while
« Respuesta #7 en: 8 Julio 2012, 00:52 am »

Quizá sea del algoritmo como dice Khronos14... Como preguntabas por pasar de switch a if-else, creía que dabas a entender que el algoritmo estaba bien planteado y no lo miré...
En línea

anonimo3.0

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Cambiar un Switch por un do-while
« Respuesta #8 en: 8 Julio 2012, 00:57 am »

anonimo3.0, tienes mal planteado el algoritmo. Yo lo que haría sería un array y quedaría algo como esto:

Código
  1. while(fin_juego != 0){
  2.        if (jugador == ficha_c){
  3.            printf ( "Turno del Computador\n" ) ;
  4.            jugada_ok = 1;
  5.            while (jugada_ok != 0)
  6. {
  7.                jugada = rand() % 9;
  8. if (t[jugada] == 9){
  9. t[jugada] = jugador;
  10. jugada_ok = 0;
  11. }
  12. }          
  13.            }
  14. }
  15.  

Más simple, ¿verdad?

Lo que no entiendo es para que haces el bucle while de jugada_ok...

Saludos.



  jugada_ok  se supone que funciona de interruptor entre los distintos casos...la cosa es que no me permiten usar switch :( , y donde meto los if en ese algoritmo?
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Cambiar un Switch por un do-while
« Respuesta #9 en: 8 Julio 2012, 13:23 pm »

No he leido el codigo, pero segun he entendido quieres hacer lo que haria un switch sin hacer un switch. Ademas los casos son 1, 2, 3, 4, 5, 6, ,7 ,8 y 9. Puedes hacer un bucle for para recorrer los casos del 1 al 9, y si el numero es igual haces lo que sea que quieras hacer y pones una sentencia break.

Saludos.

PD: ¿Porque metes srand(time(NULL)) en el while?
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cambiar if-else por switch
Programación C/C++
mbmbiofreak 3 2,022 Último mensaje 30 Junio 2014, 21:38 pm
por mbmbiofreak
Cambiar Switch por If/else o Do/while
Java
tanGoO_4 2 2,632 Último mensaje 9 Febrero 2015, 13:58 pm
por Usuario Invitado
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines