added quadratic equation solving to Solver module, s/private/protected/

git-svn-id: svn://anubis/gvsu@362 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
josh 2009-01-16 20:52:33 +00:00
parent 8c3aceab17
commit 887961344f
2 changed files with 33 additions and 7 deletions

View File

@ -1,17 +1,43 @@
#include "Solver.h"
#include <math.h>
Solver::Solver(double a, double b, double c, double d, double e)
{
m_coef[0] = a;
m_coef[1] = b;
m_coef[2] = c;
m_coef[3] = d;
m_coef[4] = e;
this->a = a;
this->b = b;
this->c = c;
this->d = d;
this->e = e;
}
/* solve a quadratic equation */
Solver::Result QuadraticSolver::solve()
{
Result res;
double discriminant = b * b - 4 * a * c;
if (discriminant < 0.0)
{
res.numResults = 0;
}
else
{
double sqrt_discriminant = sqrt(discriminant);
double two_a = 2.0 * a;
if (sqrt_discriminant = 0.0)
{
res.numResults = 1;
res.results[0] = (-b) / two_a;
}
else
{
res.numResults = 2;
res.results[0] = (-b - sqrt_discriminant) / two_a;
res.results[1] = (-b + sqrt_discriminant) / two_a;
}
}
return res;
}
Solver::Result CubicSolver::solve()

View File

@ -18,8 +18,8 @@ class Solver
double e = 0.0);
virtual Result solve() = 0;
private:
double m_coef[5];
protected:
double a, b, c, d, e;
};
class QuadraticSolver : public Solver