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 (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;
}
}
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.
No funciona, cae en un ciclo repetitivo :o me pide que ingrese el numero de casilla todo el tiempo, pero sin hacer nada
¿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!
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; }
}
}
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!
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.
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é...
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?
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?
Cita de: daniyo 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?
Vaya! no sabia que se podía usar break sin el switch, jajaja siempre se aprende algo nuevo..
//Gracias a todos por responder// ;-)