P4-2: Calcular las raíces de una ecuación de segundo grado ax^2+bx+c=0 con coeficientes
enteros
Las raíces vienen determinadas por la ecuación:
(la expresión de una ecuación de segundo grado)
La función sqrt() de la librería matemática extrae la raíz cuadrada de un número positivo. Para
poder usarla añade la cabecera #include <cmath> al fichero fuente.
Para extraer la raíz de un número negativo debes cambiarlo previamente de signo (multiplicarlo por (-
1)) y tener en cuenta a partir de ese momento la naturaleza imaginaria del resultado.
El programa considerará todos los casos particulares: que a sea 0 (la ecuación no es de 2º grado y
así evitamos dividir por 0), que a y b sean 0 (absurdo), que el discriminante sea 0 (raíz doble real), etc.
Donde sea necesario debes usar static_cast<double>(variable)para obtener los resultados
correctos y evitar así obtener la división entera en lugar de la correcta en coma flotante.
Código
Muchas gracias por vuestro tiempo.
#include <iostream> #include <cmath> using namespace std; int main() { int b,a,c,disc; int raiz; cout <<"Introduce un valor para b: "; cin >> b; cout <<"Introduce un valor para a: "; cin >>a; cout<<"Introduce un valor para c: "; cin >>c; if(a==0&& b==0){ cout <<"Absurdo"<<endl; return 0;} else if(a==0){ cout<<"No es una ecuacion de segundo grado"<<endl; return 0;} disc=(b*b)-(4*a*c); if (disc<0){ disc=-1*disc; raiz=sqrt(disc); cout<<"x1="<<raiz<<" x2="<<"-"<<raiz<<"i"<<endl; return 0; } else raiz=sqrt(disc); cout<<"x1= "<<raiz<<" x2= "<<"-"<<raiz; }
saludos.