Título: ¿Me ayudan por favor? Publicado por: Sah4 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 Título: Re: ¿Me ayudan por favor? Publicado por: DtxdF 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
~ DtxdF Título: Re: ¿Me ayudan por favor? Publicado por: Sah4 en 31 Mayo 2021, 04:21 am Muchas gracias.
|