// (R) Solución a cuadrática (sin structs, pasando parámetros por valor y referencia)
/* La ejecución del programa debe tener el siguiente aspecto:
Ingresar coeficientes de la ecuación (a, b y c): 1 1 -6
La ecuación ingresada es f(x) = x^2 + x – 6
Las raíces de la ecuación son x1 = 2 y x2 = -3
Además la función main no debe modificarse.
*/
#include <iostream>
using namespace std;
void leer( double &, double &, double & );
void mostrar( double , double , double );
bool resolver( double, double, double, double &, double & );
void mostrar_solucion( double, double );
int main()
{
double x1, x2, a, b, c;
leer(a, b, c);
mostrar(a, b, c);
if ( resolver(a, b, c, x1, x2) )
mostrar_solucion(x1, x2);
else
cout << "\nLa solucion tiene raices complejas\n";
}
void leer( double &vA, double &vB, double &vC )
{
cout << "Ingresar coeficientes de la ecuación (a, b y c): ";
// cin >> vA >> vB >> vC;
(vA = 1, vB = -2.7, vC = -13);
}
void mostrar( double vA, double vB, double vC )
{
cout << "La ecuacion ingresada es f(x) = ";
if ( vA!=0 ) {
if ( vA!=1 )
cout << vA;
cout << "x^2 ";
}
if ( vB!=0 ) {
if ( vB>0 )
cout << "+ ";
if ( vB<0 )
cout << "- ";
if ( vB!= 1 )
cout << fabs(vB);
cout << "x ";
}
if ( vC!=0 ) {
if ( vC>1 )
cout << "+ ";
else
cout << "- ";
cout << fabs(vC);
}
cout << endl;
}
bool resolver( double a, double b, double c, double &x1, double &x2 )
{
double disc = b*b-4*a*c;
if ( disc<0 )
return false;
x1 = (-b + sqrt(disc))/(2*a);
x2 = (-b - sqrt(disc))/(2*a);
return true;
}
void mostrar_solucion( double s1, double s2 )
{
cout << "\nLas raices de la ecuacion son x1 = " << s1
<< " y x2 = " << s2 << endl;
}