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.
...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.
#include<iostream>
#include<cmath>
using namespace std;
class Raiz {
public:
double a, b;
Raiz(double a);
void mostrar_raiz();
};
Raiz::Raiz(double a)
{
if (a <= 0)
throw "Debes de colocar un numero positivo";
this->a=a;
this->b=sqrt(a);
}
void Raiz::mostrar_raiz()
{
cout << "La raiz cuadrada de "<< a << " es: " << b << endl;
}
int main()
{
cout<<"Programa que saca raiz cuadrada"<<endl<<endl;
try {
Raiz r(1);
r.mostrar_raiz();
} catch (const char *exp) {
cout << exp << endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
~ DtxdF