SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: krosty4782 en Martes 3 de Marzo de 2009, 12:25

Título: que es else if exactamente
Publicado por: krosty4782 en Martes 3 de Marzo de 2009, 12:25
Hola.
Bueno estaba programando un tres en raya en C++.
El problema es que quiero que dentro de una funcion que contiene muchos if, que si entra en uno la funcion termine.
Entonces me dieron otra idea, que use "else if", lo hize pero creo que no esta andando bien...
Cual es la definicion esxacta del "else if", que hace exactamente ?
Mi codigo esta asi:

Código: C
  1. if (tablero[8] && tablero[2] == 'X')
  2.                 {
  3.                                  tablero[5] = 'O';
  4.                 }
  5.  
  6.  
  7.  
  8. else if (tablero[4] != 'O' || 'X')
  9.                 {
  10.                                  tablero[4] = 'O';
  11.                                                                
  12. }
  13. else if (tablero[2] != 'O' || 'X')
  14.                 {
  15.                                  tablero[2] = 'O';
  16.                                                              
  17. }
  18. else if (tablero[0] != 'O' || 'X')
  19.                 {
  20.                                  tablero[0] = 'O';
  21.                                                              
  22. }
  23. else if (tablero[6] != 'O' || 'X')
  24.                 {
  25.                                  tablero[6] = 'O';
  26.                                                              
  27. }
  28. else if (tablero[8] != 'O' || 'X')
  29.                 {
  30.                                  tablero[8] = 'O';
  31.                                                              
  32. }
  33.  

Saludos
Título: Re: que es else if exactamente
Publicado por: Eternal Idol en Martes 3 de Marzo de 2009, 13:16
http://www.zator.es/Cpp/E4_10_2.htm#else%20if (http://www.zator.es/Cpp/E4_10_2.htm#else%20if" onclick="window.open(this.href);return false;)

PD. En tu if entrara siempre que tablero[8] no sea 0 y tablero[2] sea X, tal vez no sea eso lo que queres.
Título: Re: que es else if exactamente
Publicado por: krosty4782 en Martes 3 de Marzo de 2009, 16:23
Lo que yo quiero exactamente es que al entrar en un if, la funcion termine, pero nose como finalizar la funcion desde un if, osea no se puede utilizar un break, asi que nose :S
No logro hacer que al entrar a un if, es decir, si se cumple la condicion de uno, que la funcion termine, que no siga entrando a los demas, eso es exactamente lo que quiero hacer, seria como poner un break alfinal de cada if, eso seria exactamente, como podria lograrlo ?
Saludos gracias
Título: Re: que es else if exactamente
Publicado por: betopin en Martes 3 de Marzo de 2009, 16:38
Hay muchas formas...por ejemplo dentro del if puede realizar un return

Ej

Código: C
  1. if (tablero[8] && tablero[2] == 'X')
  2.                 {
  3.                                  tablero[5] = 'O';
  4.                                  return 0;
  5.                 }
  6.  

o puedes usar otras herramientas como el comando exit....
Título: Re: que es else if exactamente
Publicado por: Eternal Idol en Martes 3 de Marzo de 2009, 18:05
Eso hace else if, si la primera condicion (el if) se cumple entonces no es evalua la segunda (y asi sucesivamente, si se cumple el primer else if no se evalua el segundo).
Título: Re: que es else if exactamente
Publicado por: krosty4782 en Martes 3 de Marzo de 2009, 19:23
Pero entonces el 3 if si se cumpliria, supongamos:
Primer if = pone cruz en 5, el else if no lo cumple, pero el proximo else if si es posible de cumplir, lo haria o no ? entonces ya no esta haciendo un solo movimiento que es lo que quiero.
Digamos que al entrar en algun if, el primero que cumpla la condicion NO, evalue ningun otro en el codigo, que directamente termien la funcion.
Sobre lo del return, solo va a retornar 0, nada mas... la funcion va a continuar, ademas esta declarada como void. Voy a averiguar sobre exit.
Les dejo el code, como esta:

Código: C++
  1. void juegaC() //Movimientos maquina
  2. {
  3.  if (tablero[0] && tablero[1] == 'O')
  4.                  {
  5.                                   tablero[2] = 'O';
  6.                                  
  7.                  }
  8.                                    
  9.               else if (tablero[0] && tablero[2] == 'O')
  10.                  {
  11.                                   tablero[1] = 'O';
  12.                                  
  13.                                                    }
  14.                                                                                    
  15.                  else if (tablero[0] && tablero[4] == 'O')
  16.                  {
  17.                                   tablero[8] = 'O';
  18.                                                                                                    
  19.                  }      
  20.                  else if (tablero[3] && tablero[4] == 'O')
  21.                  {
  22.                                   tablero[5] = 'O';
  23.                                                                    
  24.                  }      
  25.                  else if (tablero[6] && tablero[7] == 'O')
  26.                  {
  27.                                   tablero[8] = 'O';
  28.                                                                    
  29.                  }      
  30.                  else if (tablero[0] && tablero[4] == 'O')
  31.                  {
  32.                                   tablero[8] = 'O';
  33.                                                                    
  34.                  }      
  35.                  else if (tablero[2] && tablero[4] == 'O')
  36.                  {
  37.                                   tablero[6] = 'O';
  38.                  }      
  39.                  else if (tablero[1] && tablero[4] == 'O')
  40.                  {
  41.                                   tablero[7] = 'O';
  42.                                                                    
  43.                  }      
  44.                  else if (tablero[0] && tablero[3] == 'O')
  45.                  {
  46.                                   tablero[6] = 'O';
  47.                                                                    
  48.                  }      
  49.                  else if (tablero[2] && tablero[5] == 'O')
  50.                  {
  51.                                   tablero[8] = 'O';
  52.                                                                    
  53.                  }      
  54.                  else if (tablero[1] && tablero[0] == 'O')
  55.                  {
  56.                                   tablero[2] = 'O';
  57.                                                                    
  58.                  }      
  59.                  
  60.                  else if (tablero[4] && tablero[3] == 'O')
  61.                  {
  62.                                   tablero[5] = 'O';
  63.                                                                    
  64.                  }      
  65.                  else if (tablero[7] && tablero[6] == 'O')
  66.                  {
  67.                                   tablero[8] = 'O';
  68.                                                                    
  69.                  }      
  70.                  else if (tablero[4] && tablero[0] == 'O')
  71.                  {
  72.                                   tablero[8] = 'O';
  73.                                                                    
  74.                  }      
  75.                  else if (tablero[4] && tablero[2] == 'O')
  76.                  {
  77.                                   tablero[6] = 'O';
  78.                                                                    
  79.                  }      
  80.                  else if (tablero[4] && tablero[1] == 'O')
  81.                  {
  82.                                   tablero[7] = 'O';
  83.                                                                    
  84.                  }      
  85.                  else if (tablero[3] && tablero[0] == 'O')
  86.                  {
  87.                                   tablero[6] = 'O';
  88.                                                                    
  89.                  }      
  90.                  else if (tablero[5] && tablero[2] == 'O')
  91.                  {
  92.                                   tablero[8] = 'O';
  93.                                                                    
  94.                  }      
  95.                  else if (tablero[2] && tablero[0] == 'O')
  96.                  {
  97.                                   tablero[1] = 'O';
  98.                                                                    
  99.                  }      
  100.                  else if (tablero[5] && tablero[3] == 'O')
  101.                  {
  102.                                   tablero[4] = 'O';
  103.                                                                    
  104.                  }      
  105.                    else if (tablero[8] && tablero[6] == 'O')
  106.                  {
  107.                                   tablero[7] = 'O';
  108.                                                                    
  109.                  }      
  110.                  else if (tablero[8] && tablero[0] == 'O')
  111.                  {
  112.                                   tablero[4] = 'O';
  113.                                                                    
  114.                                   }      
  115.                  else if (tablero[6] && tablero[2] == 'O')
  116.                  {
  117.                                   tablero[4] = 'O';
  118.                                                                    
  119.                  }      
  120.                  else if (tablero[7] && tablero[1] == 'O')
  121.                  {
  122.                                   tablero[4] = 'O';
  123.                                                                    
  124.                                                
  125.                                   }
  126.                 else if (tablero[6] && tablero[0] == 'O')
  127.                  {
  128.                                   tablero[3] = 'O';
  129.                                                                    
  130.                                                
  131.                                   }
  132.                 else if (tablero[8] && tablero[2] == 'O')
  133.                  {
  134.                                   tablero[5] = 'O';
  135.                  }
  136.  
  137.  
  138.                 else if (tablero[0] && tablero[1] == 'X')
  139.                  {
  140.                                   tablero[2] = 'O';
  141.                  }
  142.                                    
  143.                  else if (tablero[0] && tablero[2] == 'X')
  144.                  {
  145.                                   tablero[1] = 'O';
  146.                  }
  147.                                                                                    
  148.                  else if (tablero[0] && tablero[4] == 'X')
  149.                  {
  150.                                   tablero[8] = 'O';
  151.                                                                  
  152.                  }      
  153.                  else if (tablero[3] && tablero[4] == 'X')
  154.                  {
  155.                                   tablero[5] = 'O';
  156.                                                                    
  157.                  }      
  158.                  else if (tablero[6] && tablero[7] == 'X')
  159.                  {
  160.                                   tablero[8] = 'O';
  161.                                                                    
  162.                  }      
  163.                  else if (tablero[0] && tablero[4] == 'X')
  164.                  {
  165.                                   tablero[8] = 'O';
  166.                                                                    
  167.                  }      
  168.                  else if (tablero[2] && tablero[4] == 'X')
  169.                  {
  170.                                   tablero[6] = 'O';
  171.                  }      
  172.                  else if (tablero[1] && tablero[4] == 'X')
  173.                  {
  174.                                   tablero[7] = 'O';
  175.                                                                    
  176.                  }      
  177.                  else if (tablero[0] && tablero[3] == 'X')
  178.                  {
  179.                                   tablero[6] = 'O';
  180.                                                                    
  181.                  }      
  182.                  else if (tablero[2] && tablero[5] == 'X')
  183.                  {
  184.                                   tablero[8] = 'O';
  185.                                                                    
  186.                  }      
  187.                  else if (tablero[1] && tablero[0] == 'X')
  188.                  {
  189.                                   tablero[2] = 'O';
  190.                                                                    
  191.                  }      
  192.                  
  193.                  else if (tablero[4] && tablero[3] == 'X')
  194.                  {
  195.                                   tablero[5] = 'O';
  196.                                                                    
  197.                  }      
  198.                  else if (tablero[7] && tablero[6] == 'X')
  199.                  {
  200.                                   tablero[8] = 'O';
  201.                                                                    
  202.                  }      
  203.                 else if (tablero[4] && tablero[0] == 'X')
  204.                  {
  205.                                   tablero[8] = 'O';
  206.                                                                    
  207.                  }      
  208.                  else if (tablero[4] && tablero[2] == 'X')
  209.                  {
  210.                                   tablero[6] = 'O';
  211.                                                                    
  212.                  }      
  213.                  else if (tablero[4] && tablero[1] == 'X')
  214.                  {
  215.                                   tablero[7] = 'O';
  216.                                                                    
  217.                  }      
  218.                  else if (tablero[3] && tablero[0] == 'X')
  219.                  {
  220.                                   tablero[6] = 'O';
  221.                                                                    
  222.                  }      
  223.                  else if (tablero[5] && tablero[2] == 'X')
  224.                  {
  225.                                   tablero[8] = 'O';
  226.                                                                    
  227.                  }      
  228.                  else if (tablero[2] && tablero[0] == 'X')
  229.                  {
  230.                                   tablero[1] = 'O';
  231.                                                                    
  232.                  }      
  233.                  else if (tablero[5] && tablero[3] == 'X')
  234.                  {
  235.                                   tablero[4] = 'O';
  236.                                                                    
  237.                  }      
  238.                    else if (tablero[8] && tablero[6] == 'X')
  239.                  {
  240.                                   tablero[7] = 'O';
  241.                                                                    
  242.                  }      
  243.                  else if (tablero[8] && tablero[0] == 'X')
  244.                  {
  245.                                   tablero[4] = 'O';
  246.                                                                    
  247.                                   }      
  248.                  else if (tablero[6] && tablero[2] == 'X')
  249.                  {
  250.                                   tablero[4] = 'O';
  251.                                                                    
  252.                  }      
  253.                 else if (tablero[7] && tablero[1] == 'X')
  254.                  {
  255.                                   tablero[4] = 'O';
  256.                                                                    
  257.                                                
  258.                                   }
  259.                 else if (tablero[6] && tablero[0] == 'X')
  260.                  {
  261.                                   tablero[3] = 'O';
  262.                                                                    
  263.                                                
  264.                                   }
  265.                 else if (tablero[8] && tablero[2] == 'X')
  266.                  {
  267.                                   tablero[5] = 'O';
  268.                  }
  269.  
  270.  
  271.  
  272. else if (tablero[4] != 'O' || 'X')
  273.                  {
  274.                                   tablero[4] = 'O';
  275.                                                                  
  276.  }
  277.   else if (tablero[2] != 'O' || 'X')
  278.                  {
  279.                                   tablero[2] = 'O';
  280.                                                                
  281.  }
  282.   else if (tablero[0] != 'O' || 'X')
  283.                  {
  284.                                   tablero[0] = 'O';
  285.                                                                
  286.  }
  287.   else if (tablero[6] != 'O' || 'X')
  288.                  {
  289.                                   tablero[6] = 'O';
  290.                                                                
  291.  }
  292.  else if (tablero[1] != 'O' || 'X')
  293.                  {
  294.                                   tablero[1] = 'O';
  295.                                                                
  296.  }
  297.  else if (tablero[3] != 'O' || 'X')
  298.                  {
  299.                                   tablero[3] = 'O';
  300.                                                                
  301.  }
  302.  else if (tablero[7] != 'O' || 'X')
  303.                  {
  304.                                   tablero[7] = 'O';
  305.                                                                
  306.  }
  307.  else if (tablero[8] != 'O' || 'X')
  308.                  {
  309.                                   tablero[8] = 'O';
  310.                                                                
  311.  }
  312.  

Por ejemplo, si incerto la cruz en "0", la maquina pone la O, en  "2", y yo nunca puse esa condicion :S hay algo que anda mal.

Gracias
Título: Re: que es else if exactamente
Publicado por: Eternal Idol en Martes 3 de Marzo de 2009, 19:59
Cita de: "krosty4782"
Pero entonces el 3 if si se cumpliria, supongamos:

No, para algo es else if, si pusieras if si se cumpliria.

Si tenes dudas simplemente PROBALO (con trazas o depurando).
Título: Re: que es else if exactamente
Publicado por: krosty4782 en Martes 3 de Marzo de 2009, 21:07
Lo depure recien, y lo que esta haciendo es entrar en este:

Código: C++
  1.  
  2.  else if (tablero[1] && tablero[0] == 'X')
  3.                  {
  4.                                   tablero[2] = 'O';
  5.                                                                    
  6.                  }      
  7.  

Pero no tengo idea porque esta entrando ahi, si supuestamente ahi lo unico que tendria 'X' seria el tablero[0].
A alguien se le ocurre porque pueda estar entrando :S ?
Ademas muchos if va paso a paso, pero otros como que salta, es decir viene if 1 if 2 if 3, y de repente salta solo a if 5, esto a que se debe ?
Saludos
Título: Re: que es else if exactamente
Publicado por: Eternal Idol en Martes 3 de Marzo de 2009, 23:41
else if (tablero[1] && tablero[0] == 'X')

Te lo dije en mi primer mensaje, eso va a entrar siempre que haya una X en tablero[0] y tablero[1] sea diferente de 0, si queres que los dos sean X tenes que poner:

else if (tablero[1] == 'X' && tablero[0] == 'X')
Título: Re: que es else if exactamente
Publicado por: krosty4782 en Martes 3 de Marzo de 2009, 23:47
Cierto pero no lo habia entendido :P
Ahora ya va.
Te agradezco eternal idol porque siemrpe me ayudas =)
Gracias, ya lo tengo casi terminado, aver si lo termino del todo de una vez este proyecto y sigo aprendiendo que estoy hace unos dias parado con esto.
Gracias de nuevo
Saludos
Título: Re: que es else if exactamente
Publicado por: Eternal Idol en Martes 3 de Marzo de 2009, 23:51
De nadas  B)