elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Me ayudan por favor?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Me ayudan por favor?  (Leído 1,881 veces)
Sah4

Desconectado Desconectado

Mensajes: 5


Estudiante novato de Ingeniería en Sistemas Comp.


Ver Perfil
¿Me ayudan por favor?
« en: 30 Mayo 2021, 22:32 pm »

Me podrían ayudar, hice un programa que me da la raíz cuadrada de un número y me suelta una excepción cuando pongo un número negativo, el problema es que no se como hacer que el programa solo me dé la excepción cuando digite un número negativo y no me haga la operación, y también que el programa se detenga cuando digite el 0.

#include<iostream>
#include<cmath>
using namespace std;

class Raiz{
   public:
      double a, b;
      Raiz(double a);
      void mostrar_raiz();
};

Raiz::Raiz(double a){
      
   try{
   if(a<0)
   throw"Debes de colocar un numero positivo";
   this->a=a;
    this->b=sqrt(a);   
   }
   catch(const char* exp){
       cout<<exp<<endl;
   }
}

void Raiz::mostrar_raiz(){
   cout<<"La raiz cuadrada de "<<a<<" es: "<<b;
}

int main(){
cout<<"Programa que saca raiz cuadrada"<<endl<<endl;
Raiz r(4);
r.mostrar_raiz();
   
   return 0;
}
   
Código
  1.  


En línea

DtxdF

Desconectado Desconectado

Mensajes: 52



Ver Perfil
Re: ¿Me ayudan por favor?
« Respuesta #1 en: 31 Mayo 2021, 00:46 am »

Hola @Genesis_4

Usa Código GeShi (esto tiene que ver con la publicación en sí), para que la lectura de tu código en el foro sea amena.

Citar
...también que el programa se detenga cuando digite el 0

Debes cambiar if (a < 0) (si el contenido que hace referencia la variable a es menor que 0) por if (a <= 0) (si el contenido que hace referencia la variable a es menor o igual a 0).

El problema es que estás lanzando la excepción y atajándola dentro del mismo Raiz y luego imprimiéndola, por lo tanto nunca impides que se llame al método mostrar_raiz(). Debes atajarla en la misma función main(), por ejemplo, y luego sailr.

Código
  1. #include<iostream>
  2. #include<cmath>
  3.  
  4. using namespace std;
  5.  
  6. class Raiz {
  7.   public:
  8.      double a, b;
  9.      Raiz(double a);
  10.      void mostrar_raiz();
  11. };
  12.  
  13. Raiz::Raiz(double a)
  14. {
  15.    if (a <= 0)
  16.        throw "Debes de colocar un numero positivo";
  17.    this->a=a;
  18.    this->b=sqrt(a);  
  19. }
  20.  
  21. void Raiz::mostrar_raiz()
  22. {
  23.    cout << "La raiz cuadrada de "<< a << " es: " << b << endl;
  24. }
  25.  
  26. int main()
  27. {
  28.    cout<<"Programa que saca raiz cuadrada"<<endl<<endl;
  29.    try {
  30.        Raiz r(1);
  31.        r.mostrar_raiz();
  32.    } catch (const char *exp) {
  33.        cout << exp << endl;
  34.        return EXIT_FAILURE;
  35.    }
  36.  
  37.    return EXIT_SUCCESS;
  38. }

~ DtxdF


En línea

Sah4

Desconectado Desconectado

Mensajes: 5


Estudiante novato de Ingeniería en Sistemas Comp.


Ver Perfil
Re: ¿Me ayudan por favor?
« Respuesta #2 en: 31 Mayo 2021, 04:21 am »

Muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
me ayudan por favor!!
Juegos y Consolas
N64boy 0 952 Último mensaje 23 Diciembre 2004, 12:16 pm
por N64boy
Me Ayudan con esta imagen por favor, gracias.
Diseño Gráfico
Graphixx 4 7,416 Último mensaje 1 Noviembre 2010, 19:34 pm
por Graphixx
Me ayudan con la descarga de un archivo-? por favor no pesa mucho
Dudas Generales
genomma 2 1,517 Último mensaje 27 Diciembre 2012, 04:44 am
por genomma
Me ayudan con este problema de C++ .. Por favor..
Programación C/C++
juandavidcool 1 1,064 Último mensaje 24 Mayo 2013, 02:13 am
por amchacon
Me ayudan a entender esta información por favor?
Seguridad
thundercats 1 985 Último mensaje 11 Agosto 2013, 22:23 pm
por darkangel2125
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines