<div dir="ltr">solo un comentario <br>NUNCA NUNCA NUNCA uses goto... <br><br><div class="gmail_quote">El 18 de octubre de 2008 4:30, Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu">srd4121@njit.edu</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hola Marco,<div class="Ih2E3d"><br>
<br>
Marco Ibarra wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Soy nuevo en C++ y tambien en la lista de correo, estuve buscando la<br>
</blockquote>
<br></div>
Antes de continuar, te doy la bienvenida a la lista y a este mundo de C++.<div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
manera de regresar al principio de un switch sin la necesidad de goto<br>
(en caso de que exista tal manera), como ejemplo el siguiente codigo:<br>
</blockquote>
<br></div>
Veamos el código.<div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
cout<<"El siguiente programa le permite realizar conversiones de grados Celsius"<<endl;<br>
cout<<"y grados Fahrenheit. Para comenzar:"<<endl<<endl;<br>
<br>
<br>
start1: cout<<"Seleccione la escala que desea convertir: " <<endl;<br>
cout<<"Celsius(1), Fahrenheit(2)." << endl<<endl;<br>
<br>
//seleccion de escala y conversion<br>
<br>
int escala;<br>
float celsius, fahrenheit; cin>> escala; start:<br>
switch (escala){ case 1:<br>
cout<<"Ingrese grados Celsius:"<<endl;<br>
cin>> celsius;<br>
fahrenheit=celsius*9/5+32;<br>
cout<<endl<<endl<<celsius<<" grados Celsius, equivalen a "<br>
<<fahrenheit<<" Grados Fahrenheit"<<endl<<endl;<br>
break; case 2: cout<<"Ingrese grados Fahrenheit:"<<endl;<br>
cin>> fahrenheit; celsius=fahrenheit-32*5/9;<br>
cout<<endl<<endl<<fahrenheit<<" grados Fahrenheit equivalen a "<br>
<<celsius<<" Grados Celsius"<<endl<<endl;<br>
break;<br>
default:<br>
cout<<endl<<"Seleccion incorrecta, ingrese una opcion valida."<br>
<<endl<<"Celsius(1), Fahrenheit(2)";<br>
cout<<endl<<endl;<br>
cin>>escala;<br>
goto start;<br>
</blockquote>
<br></div>
Podrías usar 'continue' en lugar de 'goto', ya que volverás a ejecutar esta sentencia de 'switch/case'. De todas maneras, no sugiero hacer esto. En su lugar, usa bucles, como puede ser 'do/while'. Por ejemplo,<br>
<br>
bool bRepetir = false;<br>
do<br>
{<br>
...<br>
switch( escala )<br>
{<br>
case 1:<br>
...<br>
break;<br>
<br>
case 1:<br>
...<br>
break;<br>
<br>
default:<br>
...<br>
bRepetir = true;<br>
}<br>
} while( bRepetir );<br>
<br>
Usando una variable booleana podemos controlar si debemos repetir estas sentencias o no.<div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
}<br>
//repetir o salir del programa<br>
<br>
char rep;<br>
cout<<endl<<"Desea realizar otra operacion?"<<endl;<br>
cout<<"Presione (r)para repetir, o cualquier tecla para salir."<<endl<<endl;<br>
cin>>rep;<br>
if (rep == 'r')<br>
goto start1; <br>
</blockquote>
<br></div>
Aquí ocurre lo mismo. Si queremos repeticiones, entonces requerimos bucles. Nuevamente, podemos usar un bucle 'do/while' en este caso. El esquema sería el siguiente:<br>
<br>
do<br>
{<div class="Ih2E3d"><br>
cout<<"Seleccione la escala que desea convertir: " <<endl;<br>
cout<<"Celsius(1), Fahrenheit(2)." << endl<<endl;<br></div>
...<br>
bool bRepetir = false;<br>
do<br>
{<br>
...<br>
switch( escala )<br>
{<br>
...<br>
}<br>
} while( bRepetir );<br>
...<br>
} while( 'r' == rep );<div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
else {<br>
cout<<endl<<endl<<endl<br>
<<"****Gracias por utilizar este programa, Hasta luego!!****"<<endl;<br>
}<br>
cin.get();<br>
cin.get();<br>
return 0;<br>
}<br>
<br>
Al parecer el codigo ya compilado funciona tal como deveria, pero no dejo de pensar en goto.<br>
<br>
</blockquote>
<br></div>
Deberías dejar de pensar en 'goto'. Existen demasiados peligros y quebraderos de cabeza que no merece la pena usar este vocablo. Como ya he mencionado antes, si tu diseño necesita repetir, entonces automática e inmediatamente deberías pensar en usar bucles. C++ te ofrece tres diferentes tipos de bucles, por lo que tienes donde elegir.<br>
<br>
<br>
Espero que esto te aclare el tema.<br><font color="#888888">
<br>
Steven</font><div><div></div><div class="Wj3C7c"><br>
<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br> (\__/) <br>(='.'=)This is Bunny. Copy and paste bunny into your <br>(")_(")signature to help him gain world domination. <br><br>
</div>