<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'>el switch era la versión 1 del programa :-) lo cambié por los if etc.<div><br></div><div>Modifiqué el programa para que yo solo usase las variables PIEDRA etc, en todos los casos, y el --eleccion</div><div><br></div><div><div>Muchas gracias por todos los apuntes Steven, un saludo!</div><div><br><div><hr id="stopSpelling">Date: Fri, 25 Apr 2014 12:25:38 -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-25 7:04 GMT-04:00 Oscar Aparicio Holgado <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;">


<div><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></div></blockquote><div><br></div><div>Como dije, se trata de representar los conceptos y usar tal representación. Originalmente, representaste cada elección de la máquina usando cadenas de caracteres, pero usaste otra representación para la elección del usuario. Si usas una representación común, entonces podemos tratar el mismo concepto - la elección - de la misma manera.</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;"><div><div dir="ltr"><div></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></blockquote><div><br></div><div>Sí, aunque como he explicado deberías tratar 's' y 'eleccion' de la misma manera. Esto es,</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;">
<div><div dir="ltr"><div></div><div><div><div>    else if(eleccion == 1)<br></div></div></div></div></div></blockquote><div><br></div><div>Aquí 1 no tiene ningún sentido para nosotros. Tendríamos que recordar que 1 representa "piedra". ¿Por qué recordar esto cuando podemos usar una constante con un nombre descriptivo para comunicar tal idea?</div>
<div><br></div><div>Escribe,</div><div><br></div><div>else if( eleccion-1 == PIEDRA )</div><div><br></div><div>Esto es mucho más legible y por tanto seremos menos propensos a cometer errores.</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;">
<div><div dir="ltr"><div><div><div></div></div><div>    {</div><div>        if(s == PAPEL)</div><div><div>            cout << "Perdistes panoli!" << endl;</div><div>        else</div>
<div>            cout << "Ganastes tronko!" << endl;</div><div>    }</div></div><div>    else if(eleccion == 2)</div></div></div></div></blockquote><div><br></div><div>Aquí hacemos lo mismo,</div><div>
<br></div><div>else if( eleccion-1 == PAPEL )<br></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;">
<div><div dir="ltr"><div><div>        if(s == PIEDRA)</div><div><div>            cout << "Ganastes tronko!!" << endl;</div><div>        else</div></div><div><div>            cout << "Perdistes panoli!!" << endl;</div>
<div>    else</div></div><div>        if(s == PIEDRA)</div><div><div>            cout << "Perdistes panoli!!!" << endl;</div><div>        else</div></div><div>            cout << "Ganastes tronko!!!" << endl;</div>
<div>    return 0;</div><div>}</div><div><br></div></div></div></div></blockquote></div><br></div><div class="ecxgmail_extra">Como puedes ver, vas a necesitar usar 'eleccion-1'. Por lo tanto, sugiero que hagas esta resta permanente nada más conseguir tal elección; esto es,</div>
<div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">cin >> eleccion;</div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">--eleccion;</div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">
if( s == eleccion )  ...<br></div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">if( eleccion == PIEDRA )  ...<br></div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">Ya no tienes que estar restando 1 cada vez que uses 'eleccion'.</div>
<div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">La otra alternativa es usar un 'switch/case' en lugar de 'if/else'; o sea,</div><div class="ecxgmail_extra"><br></div>
<div class="ecxgmail_extra">// ¿Empate?</div><div class="ecxgmail_extra">if( s == eleccion )  ...</div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">// No hay empate</div><div class="ecxgmail_extra">switch( eleccion )<br>
{<br>  case PIEDRA:  ...</div><div class="ecxgmail_extra">  case PAPEL:  ...</div><div class="ecxgmail_extra">  case TIJERA:  ...</div><div class="ecxgmail_extra">  default:  ...</div><div class="ecxgmail_extra">}</div><div class="ecxgmail_extra">
<br></div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">Espero que esto te oriente.</div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">Steven</div><div class="ecxgmail_extra"><br></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>                                         </div></body>
</html>