Autor
|
Tema: Cambiar un Switch por un do-while (Leído 7,271 veces)
|
anonimo3.0
Desconectado
Mensajes: 7
|
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/?kdyjq36v5z62f9yPD: esta en C (solito). while(fin_juego != 0){ if (jugador == ficha_c){ printf ( "Turno del Computador\n" ) ; jugada_ok = 1; while (jugada_ok != 0){ 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; } }
|
|
« Última modificación: 8 Julio 2012, 14:47 pm por Aprendiz-Oscuro »
|
En línea
|
|
|
|
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){ 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.
|
|
|
En línea
|
|
|
|
anonimo3.0
Desconectado
Mensajes: 7
|
No funciona, cae en un ciclo repetitivo  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
|
¿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
Mensajes: 7
|
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){ 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; } } }
|
|
« Última modificación: 8 Julio 2012, 14:46 pm por Aprendiz-Oscuro »
|
En línea
|
|
|
|
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!
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
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) { 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.
|
|
« Última modificación: 8 Julio 2012, 00:51 am por Khronos14 »
|
En línea
|
|
|
|
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é...
|
|
|
En línea
|
|
|
|
anonimo3.0
Desconectado
Mensajes: 7
|
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) { 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?
|
|
|
En línea
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
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
|
|
|
|
|