Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Manejo de excepciones

Estas en el tema de Manejo de excepciones en el foro de C/C++ en Foros del Web. Hola Soy Nuevo en el lenguaje C++ y además soy nuevo en el foro, y se me ha presentado un problema, necesito crear un "programita" ...
  #1 (permalink)  
Antiguo 30/06/2011, 12:50
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Manejo de excepciones

Hola Soy Nuevo en el lenguaje C++ y además soy nuevo en el foro, y se me ha presentado un problema, necesito crear un "programita" que me halle el el numero de metros que que avanza una bicicleta, conociendo el diametro de las ruedas y el numero de vueltas que han dado ella (la rueda).

lo primero que se me ocurrió fue con condicionales!! pero mi docente me dijo que era un mal método de programación usar tantos Condicionales (Y no me dijo nada mas!!! ¬¬) entonces estuve leyendo y averiguando y encontre por alli que se podia hacer con manejo de excepciones!!! pero creo que es muy avanzado para mi que apenas estoy comenzando. e hize el siguiente ejemplo. Creo que funciona bien me lanza el error, PERO me muestra la respuesta a pesar que lanza error. Me podrían dar una manito!!! ...

Gracias de antemano.

ah se me olvidaba los errores son que ni el Diámetro ni el numero de vueltas pueden ser menores que 0!!!

Código c++:
Ver original
  1. /*
  2. Jorge Villada
  3. Universidad del valle - Palmira, colombia
  4. Cuantos metros se avanza en una bicicleta cuyas
  5. ruedas tienen un diámetro D; después de que
  6. estas han girado N veces.
  7. */
  8. #include <iostream>
  9. using namespace std;
  10. //Prototipo de funcion hallarMetros
  11. float hallarMetros (float, float );
  12. int main(){
  13.        //defino las variables que necesito
  14.         float d,n;
  15.         cout << "Introduce el Diametro de la rueda de la Bici: ";
  16.         cin >> d;
  17.         cout << "Introduce el numero de vueltas que da la Bici: ";
  18.         cin >> n;
  19.         try{
  20.             if (d <= 0){
  21.                 string err ("Error, el diametro tiene que ser mayor que 0");
  22.                 throw err;
  23.             }
  24.             if (n < 0){
  25.                 string err ("Error el numero de vueltas tiene que ser mayor que 0");
  26.                 throw err;
  27.             }
  28.         }
  29.         catch (string error) {
  30.             cout << error << endl;
  31.         }
  32.        cout << hallarMetros(d,n);
  33.        return 0;
  34. }
  35. //funcion hallarMetros
  36. float hallarMetros (float D, float N){
  37.       float hM;
  38.        hM = 3.1416 * D * N;
  39.       return hM;
  40. }

Última edición por jorge1409; 30/06/2011 a las 13:03
  #2 (permalink)  
Antiguo 30/06/2011, 13:32
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Manejo de excepciones

Tienes que poner la función dentro del try:

Código C++:
Ver original
  1. /*
  2. Jorge Villada
  3. Universidad del valle - Palmira, colombia
  4. Cuantos metros se avanza en una bicicleta cuyas
  5. ruedas tienen un diámetro D; después de que
  6. estas han girado N veces.
  7. */
  8. #include <iostream>
  9. using namespace std;
  10. //Prototipo de funcion hallarMetros
  11. float hallarMetros (float, float );
  12. int main(){
  13.        //defino las variables que necesito
  14.         float d,n;
  15.         cout << "Introduce el Diametro de la rueda de la Bici: ";
  16.         cin >> d;
  17.         cout << "Introduce el numero de vueltas que da la Bici: ";
  18.         cin >> n;
  19.         try{
  20.             if (d <= 0){
  21.                 string err ("Error, el diametro tiene que ser mayor que 0");
  22.                 throw err;
  23.             }
  24.             if (n < 0){
  25.                 string err ("Error el numero de vueltas tiene que ser mayor que 0");
  26.                 throw err;
  27.             }
  28.         cout << hallarMetros(d,n);        
  29.         }
  30.         catch (string error) {
  31.             cout << error << endl;
  32.         }
  33.      
  34.        return 0;
  35. }
  36. //funcion hallarMetros
  37. float hallarMetros (float D, float N){
  38.       float hM;
  39.        hM = 3.1416 * D * N;
  40.       return hM;
  41. }

En cualquier caso sería más elegante lanzar las excepciones dentro de la función hallarMetros:


Código C++:
Ver original
  1. /*
  2. Jorge Villada
  3. Universidad del valle - Palmira, colombia
  4. Cuantos metros se avanza en una bicicleta cuyas
  5. ruedas tienen un diámetro D; después de que
  6. estas han girado N veces.
  7. */
  8. #include <iostream>
  9. using namespace std;
  10. //Prototipo de funcion hallarMetros
  11. float hallarMetros (float, float );
  12. int main(){
  13.        //defino las variables que necesito
  14.         float d,n;
  15.         cout << "Introduce el Diametro de la rueda de la Bici: ";
  16.         cin >> d;
  17.         cout << "Introduce el numero de vueltas que da la Bici: ";
  18.         cin >> n;
  19.         try{
  20.             cout << hallarMetros(d,n);
  21.         }
  22.         catch (string error) {
  23.             cout << error << endl;
  24.         }
  25.        
  26.        return 0;
  27. }
  28. //funcion hallarMetros
  29. float hallarMetros (float D, float N){      
  30.       float hM;
  31.      
  32.       if (d <= 0){
  33.                 string err ("Error, el diametro tiene que ser mayor que 0");
  34.                 throw err;
  35.             }
  36.             if (N < 0){
  37.                 string err ("Error el numero de vueltas tiene que ser mayor que 0");
  38.                 throw err;
  39.             }
  40.        hM = 3.1416 * D * N;
  41.       return hM;
  42. }
  #3 (permalink)  
Antiguo 30/06/2011, 13:51
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Manejo de excepciones

Muchas Gracias!!! Me sirvió demasiado tu ayuda!!! espero comenzar a ganar mas conocimiento para comenzar a ayudar en el foro!!!

Compartir es vivir!!!
  #4 (permalink)  
Antiguo 30/06/2011, 16:13
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Manejo de excepciones

Lo que no entiendo porque no puedes usar condicionales. Al fin y al cabo estas usando condicionales. Te fijas con un If si son menores a 0.
Estuvo bueno el ejemplo para aprender a usar el try y el cacth.
  #5 (permalink)  
Antiguo 30/06/2011, 17:10
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Manejo de excepciones

Hola!!! El problema es que para estos ejemplos pequeños puede que funcione, porque apenas son dos variables!!!! pero mi docente siempre me dice que como haría si fueran muchas variables!!! que para eso se inventaron "herramientas" para manejar las excepciones!!!! que si las inventaron era para usarlas!!! pero nunca me dijo cuales eran entonces me toco buscarlas!!! conclase.net me ha ayudado mucho he visto que lo recomiendan mucho aca!!!! jejejej si estuvo util el ejemplo buscaba mucho por la red y casi no se encuentran ejemplos de manejo de excepciones claros, por esto tuve que recurir aca!! pero de todas maneras gracias!!!!

Etiquetas: excepciones, manejo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:35.