Calcula tambien las racices en los numeros complejos.
El problema es que te lo da en decimales , pero bueno, si sabemos un poco de razones trigonometricas (al final de la pagina), sabremos a que numero irracional perteneze la aproximación.
Se precisara de un compilador C++ para complilar; puedes descargarte uno aquí (gratis)
Ahí va:
Código :
#include <stdlib.h> #include <math.h> #include <iostream> using namespace std; int main(void) { double a, b, c, res1, res2, arrel, discriminante, x, y; cout <<"Este programa solicita calcula las rizes de una equacion de segundo grado." << endl;cout << endl;cout << endl; cout << "Considerando a(x^2) + bx + c = 0" << endl<<endl<<endl; cout << "Introduzca el factor (a)" << endl; cin >> a; cout << "Introduzca el factor (b)" << endl; cin >> b; if ((a==0)&&(b==0)) { cout << "Para que sea una equacion, debe existir X [a>0 y/o b>0]" <<endl;cout<<endl; cout <<endl<<endl<<endl; goto end; } cout << "Introduzca el valor numerico indivudual (c): " << endl; cin >> c; if (a==0) { res1=-c/b; cout << endl;cout << endl;cout << endl; cout << "Se trata de una equacion de 1r grado de resltado" <<endl; cout << "x = " <<res1 <<endl; } else { discriminante = (pow(b,2) - 4*a*c); if (discriminante==0) { res1=(-b)/(2*a); cout << endl;cout << endl;cout << endl; cout << "Se trata de una equacion de segundo grado de ambas raizes" <<endl; cout << "x = " <<res1 <<endl; } else { arrel=sqrt(sqrt(discriminante*discriminante)); if (discriminante>0){ res1= (b*(-1) - arrel)/(2*a); res2= (b*(-1) + arrel)/(2*a); cout << endl;cout << endl;cout << endl; cout << "Se trata de una equacion de segundo grado de resultados:" << endl; cout << "x (1) = "<< res1 <<endl; cout << "x (2) = "<< res2 <<endl; } else{ x=-b/(2*a); y=arrel/(2*a); cout << endl;cout << endl;cout << endl; cout << "El resultdo son dos raices complejas:"<<endl; cout << "Raiz 1 = "<< x << " + " << y << "i"<<endl; cout << "Raiz 2 = "<< x << " - " << y << "i"<<endl; } } } end: cout << endl;cout << endl;cout << endl;system("pause"); }