<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Muy buena Steven el if que compara si eleccion es igual a s, jamás se me habría ocurrido :-)<div><br></div><div>El código de ahora con el if y el enum (¿está bien usado?) sería este:</div><div><br></div><div><div>#include <iostream></div><div>#include <ctime></div><div>#include <cstdlib></div><div>using namespace std;</div><div><br></div><div>int main()</div><div>    {</div><div><br></div><div>    srand( time(NULL) );</div><div><br></div><div>    const char *ordenador[3] = { "piedra", "papel", "tijera" };</div><div>    int s = rand() % 3;</div><div><br></div><div>    enum resultado_t { PIEDRA, PAPEL, TIJERA };</div><div><br></div><div>    cout << "Eleccion de la maquina: " << ordenador[s] << endl;</div><div><br></div><div>    int eleccion;</div><div><br></div><div>    cout << "Introduce n. jugada (1 = piedra, 2 = papel, 3 = tijera): ";</div><div>    cin >> eleccion;</div><div>    cout << endl;</div><div><br></div><div>    if(eleccion-1 == s)</div><div>    {</div><div>        cout << "Empate" << endl;</div><div>    }</div><div><br></div><div>    else if(eleccion == 1)</div><div>    {</div><div>        if(s == PAPEL)</div><div>            cout << "Perdistes panoli!" << endl;</div><div>        else</div><div>            cout << "Ganastes tronko!" << endl;</div><div>    }</div><div>    else if(eleccion == 2)</div><div>        if(s == PIEDRA)</div><div>            cout << "Ganastes tronko!!" << endl;</div><div>        else</div><div>            cout << "Perdistes panoli!!" << endl;</div><div>    else</div><div>        if(s == PIEDRA)</div><div>            cout << "Perdistes panoli!!!" << endl;</div><div>        else</div><div>            cout << "Ganastes tronko!!!" << endl;</div><div>    return 0;</div><div>}</div><div><br></div><br><div><hr id="stopSpelling">Date: Thu, 24 Apr 2014 15:55:43 -0400<br>From: srd4121@njit.edu<br>To: cconclase@listas.conclase.net<br>Subject: Re: [C con Clase] Duda acerca de else if<br><br><div dir="ltr">Hola Óscar,<div class="ecxgmail_extra"><br><div class="ecxgmail_quote">2014-04-24 14:26 GMT-04:00 Oscar <span dir="ltr"><<a href="mailto:pelucheloko@hotmail.com" target="_blank">pelucheloko@hotmail.com</a>></span>:<br>
<blockquote class="ecxgmail_quote" style="border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;"><br>
SD> enum resultado_t { PIEDRA, PAPEL, TIJERA };<br>
SD> ...<br>
<br>
Entiendo el enum, pero no se como ni donde utilizarlo<br>
<br></blockquote><div><br></div><div>Esto sirve para representar el resultado de la elección del juego. Por lo tanto, en cualquier momento que necesites manipular las elecciones, usaremos estas constantes, que como he dicho, representan la elección tomada.</div>
<div><br></div><div>De hecho, doy un ejemplo de su uso:<br><br>if( s == PIEDRA )  ...</div><div><br></div><div>Queremos comprobar si la elección tomada - guardada en 's' - es igual a la elección de "piedra". Es decir, ¿hemos elegido piedra?</div>
<div><br></div><blockquote class="ecxgmail_quote" style="border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;">
SD> y luego, usamos estas constantes en lugar de las cadenas de caracteres; por<br>
SD> ejemplo,<br>
SD> if( s == PIEDRA )  ...<br>
<br>
¿por qué s sería igual a piedra? ¿no es PIEDRA una de las opciones del enum?<br>
<br></blockquote><div><br></div><div>No he dicho que 's' sea piedra, sino que preguntamos si es el caso; por eso usamos el operador == y además, forma parte de la sentencia 'if'.</div><div><br></div><div>
El juego consiste en hacer dos elecciones: una para cada jugador.</div><div><br></div><div>¿Qué significa hacer una elección?</div><div>Significa elegir (y recordar) un valor de entre tres: piedra, papel, o tijera.</div><div>
<br></div><div>¿Cómo representamos una elección?</div><div>Usamos enteros para representar: piedra, papel, o tijera. Podríamos usar otros tipos de datos, pero usar enteros es más sencillo y rápido.</div><div><br></div><div>
¿Qué enteros usamos?<br>Podemos asociar cualquier entero a cualquier elección, pero en mi ejemplo, elegí los enteros: 0, 1, y 2, principalmente, porque podemos usarlos como índices para el array que creaste.</div><div><br>
</div><blockquote class="ecxgmail_quote" style="border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;">Este es el código retocado con los cambios sugeridos:<br>

<br></blockquote><div><br></div><div>Está mejor. Si usaras las constantes que te comenté, el código sería más legible; esto es,</div><div><br></div><div>if( eleccion-1 == PIEDRA )<br></div><div>{</div><div>  if( s == PIEDRA )</div>
<div>    cout << "Empate!" << endl;</div><div>  else if( s == PAPEL )</div><div>    cout << "Perdistes panoli!" << endl;</div><div>  else</div><div>    cout << "Ganastes tronko!" << endl;</div>
<div>}</div><div><br></div><div>Sin embargo, te comenté que crearas la tabla de resultados y que la analizaras. El análisis sirve para que saques conclusiones, sin tener que implementar explícitamente cada resultado. Por ejemplo, mirando la tabla,</div>
<div><br></div><div><div>J1 \ J2 |  R | P | T</div><div>----------+----+---+----</div><div>    R    |  E  | V | G</div><div>----------+----+---+----</div><div>    P    |  G  | E | V</div><div>----------+----+---+----</div>
<div>    T    |  V  | G | E</div></div><div><br></div><div>vemos que si las elecciones son iguales, entonces siempre es empate. Podríamos implementar esta conclusión:</div><div><br></div><div>if( eleccion-1 == s )<br>  cout << "Empate" << endl;</div>
<div>else<br>{<br>  ...<br>}</div><div><br></div><div>Hemos eliminado tres casos con una sola comprobación.</div><div><br></div><div><br></div><div>Es posible que podamos sacar otras conclusiones útiles, si estratégicamente elegimos otros valores para representar las elecciones o incluso usando alguna fórmula para combinar los valores de cada elección.</div>
<div><br></div><div><br></div><div>Espero que esto te ayude.</div><div><br></div><div>Steven</div><div><br></div></div></div></div>
<br>_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ</div></div>                                     </div></body>
</html>