Cambiar un Switch por un do-while

Iniciado por anonimo3.0, 7 Julio 2012, 23:47 PM

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

anonimo3.0

  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).

while(fin_juego != 0){
        if (jugador == ficha_c){
            printf ( "Turno del Computador\n" ) ;
            jugada_ok = 1;
            while (jugada_ok != 0){
                jugada = rand()%9 +1;
                switch ( jugada) {
                    case 1:    if (t1 == 9){
                        t1 = jugador; jugada_ok = 0;
                            }
                            break;
                    case 2: if (t2 == 9){
                                t2 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                    case 3: if (t3 == 9){
                                t3 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                    case 4:    if (t4 == 9){
                                t4 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                    case 5:    if (t5 == 9){
                                t5 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                    case 6:    if (t6 == 9){
                                t6 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                    case 7:    if (t7 == 9){
                                t7 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                    case 8:    if (t8 == 9){
                                t8 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                    case 9:    if (t9 == 9){
                                t9 = jugador;
                                jugada_ok = 0;
                            }
                            break;
                }
            }

DickGumshoe

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

while(fin_juego != 0){
        if (jugador == ficha_c){
            printf ( "Turno del Computador\n" ) ;
            jugada_ok = 1;
            while (jugada_ok != 0){
                jugada = rand()%9 +1;
               
                    if(jugada==1)
                    {
                        if (t1 == 9){
                        t1 = jugador; jugada_ok = 0;
                        }
                    } 
                           
                    else if(jugada == 2)
                    {
                        if (t2 == 9){
                                t2 = jugador;
                                jugada_ok = 0;
                            }
                    }
                           
                    else if(jugada == 3)
                    {
                        if (t3 == 9){
                                t3 = jugador;
                                jugada_ok = 0;
                            }
                    }
                           
                   else if(jugada == 4) 
                   {
                       if (t4 == 9){
                                t4 = jugador;
                                jugada_ok = 0;
                            }
                   }
                   
                           
                    else if(jugada == 5)
                    {
                         if (t5 == 9){
                                t5 = jugador;
                                jugada_ok = 0;
                            }
                    }
                   
                           
                   else  if(jugada == 6) 
                    {
                        if (t6 == 9){
                                t6 = jugador;
                                jugada_ok = 0;
                            }
                    }
                   else if(jugada == 7)
                    {
                        if (t7 == 9){
                                t7 = jugador;
                                jugada_ok = 0;
                            }
                    }
                   else if(jugada == 8)
                    {
                         if (t8 == 9){
                                t8 = jugador;
                                jugada_ok = 0;
                            }
                    }
                   
                  else if(jugada == 9)
                   {
                       if (t9 == 9){
                                t9 = jugador;
                                jugada_ok = 0;
                        }
                     }   
                }


Saludos.

anonimo3.0

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



DickGumshoe

#3
¿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!

anonimo3.0

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

while(fin_juego != 0){
        if (jugador == computador) {
            printf ( "Turno del Computador\n" ) ;
            jugada_ok = 1;
            while (jugada_ok != 0){
                srand(time(NULL));
                jugada = rand()%9 +1;
                   if(jugada==1) {
                    if (n1 == 9){
                      n1 = jugador;
                      jugada_ok = 0; }
                   }
                   else if(jugada==2) {
                    if (n2 == 9){
                        n2 = jugador;
                        jugada_ok = 0; }
                     }
                   else if(jugada==3) {
                    if (n3 == 9){
                        n3 = jugador;
                        jugada_ok = 0; }
                      }
                   else if(jugada==4) {
                    if (n4 == 9){
                        n4 = jugador;
                        jugada_ok = 0; }
                       }
                   else if(jugada==5) {
                    if (n5 == 9){
                        n5 = jugador;
                        jugada_ok = 0; }
                        }
                   else if(jugada==6) {
                    if (n6 == 9){
                        n6 = jugador;
                        jugada_ok = 0; }
                        }
                   else if(jugada==7) {
                    if (n7 == 9){
                        n7 = jugador;
                        jugada_ok = 0; }
                        }
                   else if(jugada==8) {
                    if (n8 == 9){
                        n8 = jugador;
                        jugada_ok = 0; }
                        }
                   else if(jugada==9) {
                    if (n9 == 9){
                        n9 = jugador;
                        jugada_ok = 0; }
                        }
            }

DickGumshoe

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!

Khronos14

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


while(fin_juego != 0){
        if (jugador == ficha_c){
            printf ( "Turno del Computador\n" ) ;
            jugada_ok = 1;
            while (jugada_ok != 0)
{
                jugada = rand() % 9;
if (t[jugada] == 9){
t[jugada] = jugador;
jugada_ok = 0;
}
}           
            }
}


Más simple, ¿verdad?

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

Saludos.

DickGumshoe

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é...

anonimo3.0

Cita de: Khronos14 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:


while(fin_juego != 0){
        if (jugador == ficha_c){
            printf ( "Turno del Computador\n" ) ;
            jugada_ok = 1;
            while (jugada_ok != 0)
{
                jugada = rand() % 9;
if (t[jugada] == 9){
t[jugada] = jugador;
jugada_ok = 0;
}
}           
            }
}


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?

0xDani

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?
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