Duda con la instruccion break;

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

Duda con la instruccion break;

Notapor migueleitorone » Lun Sep 06, 2010 3:46 pm

hola, estoy haciendo un 3 en ralla muy bonito y tengo una duda sobre la instruccion break. Sale de TODOS los bucles?

EDITO:
Mi problema realmente esta aqui:
Código: Seleccionar todo
///////////VERIFICAR EMPATES////////////////////////////////
if(quien_gana == 0) /////////Entra al if mientras no haya un ganador
      {
         hay_jugadas = 0; // Se da por hecho que no hay jugadas posibles
         for(int i=0; i<3; i++)
         {
            for(int j=0; j<3; j++)
            {
               if(tablero[i][j] != 'O' && tablero[i][j] != 'X') //casilla por casilla se verifica que su contenido no sea 'X' o 'O'
               {
                  hay_jugadas = 1; // Por lo tanto quedan jugadas posibles y se sale del bucle
                  break;  ///////////////////////////////////////----> Esto no me funciona, siguen entrando en el for una vez confirmado que quedan jugadas
               }
               
            }
         }
         if (hay_jugadas == 0)
         {
            quien_gana = 3;
            break;
         }
      }


gracias :D:D
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: Duda con la instruccion break;

Notapor Juanxo » Lun Sep 06, 2010 4:34 pm

No, soio "rompe" el bucle en el que estas, aunke normalmente un break suele ponerse ya que no se ha definido bien la condicion o no se ha elegido el tipo de bucle, y por lo tanto puede evitarse:

[code]
bool hay_jugadas = true;
int i = 0;
while(hay_jugadas && i < 3)
{
int j = 0;
while(hay_jugadas && j < 3)
{
hay_jugadas = tablero[i][j] != 'O' && tablero[i][j] != 'X';
j++;
}
i++;
}

if (!hay_jugadas)
quien_gana = 3;

intenta usar bool en vez de enteros para cosas como hay jugadas o cosas que sean si/no. Y en los condicionales no hace falta que preguntes por hay_jugada == 0, sino que en C++, false = 0, true = cualquier otro numero, asi que puedes preguntar directamente if hayjugada.
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Duda con la instruccion break;

Notapor migueleitorone » Lun Sep 06, 2010 5:12 pm

Ah entonces no se suele usar break, yo lo uso mucho XD. Pues nada a evitarlo.
Antes usaba bool para ese tipo de cosas pero me comentaron que mejor usar int por el tema de no mezclar c y c++. Realmente no se si lo que uso es c o c++, pero valla diria que la mayoria de funciones que suelo usar son de c(sino son todas).

Por cierto he terminado con la IA del tres en ralla, bastante basica pero almenos esta acabado el jueguecillo.
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: Duda con la instruccion break;

Notapor Juanxo » Lun Sep 06, 2010 6:29 pm

es que en realidad un break se usa siempre que se da una condicion. en tu caso si quedaba alguna. Asi que en vez de recorrer todo y en caso de que se de la condicion salgo, recorro solo mientras que no se de la condicion.

En cuanto a lo de mezclar, no es bueno si tienes pensado utilizar un compilador de C terminos y funciones de C++, pero si utilizas algun compilador de C++ no pasa nada. Y aunque no puedes utilizar bool en C, el tema de false y true es lo mismo (false = 0, true = resto de numeros), asi que te puedes evitar la comparacion adicional (hay_posibilidad == 0) -> (!hay_posibilidad)
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Duda con la instruccion break;

Notapor migueleitorone » Mar Sep 07, 2010 2:22 pm

entiendo, aunque para mi gusto pierde en claridad el codigo, supongo que sera cosa de acostumbrarse a verlo asi. Gracias por el consejo :)
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron