#include <stdio.h>
#include <stdlib.h>
#include "Raiz_Cuadratica.h"
int main()
{
float xx = 1;
float x = 1;
float i = -12;
RaizCuadratica *lala = new RaizCuadratica( xx, x, i );
RaizCuadratica::sRaiz raiz = lala->GetRaiz();
printf( "x1 = %f || x2 = %f\n\n", raiz.r1, raiz.r2 );
delete lala;
lala = 0;
system("PAUSE");
return 0;
}
#ifndef __RAIZ_CUADRATICA_H__
#define __RAIZ_CUADRATICA_H__
#include <math.h>
class RaizCuadratica
{
public:
struct sRaiz
{
float r1;
float r2;
sRaiz( float x1, float x2 ) : r1(x1), r2(x2) {}
};
RaizCuadratica() : m_valI( 0 ), m_valX( 0 ), m_valXX( 0 ) {}
RaizCuadratica( float xx, float x, float i ) : m_valI( i ), m_valX( x ), m_valXX( xx ) {}
RaizCuadratica *setI( float i );
RaizCuadratica *setX( float x );
RaizCuadratica *setXX( float xx );
sRaiz GetRaiz();
void GetRaiz( sRaiz *output );
private:
float m_valI;
float m_valX;
float m_valXX;
};
#endif // __RAIZ_CUADRATICA_H__
#include "Raiz_Cuadratica.h"
RaizCuadratica *RaizCuadratica::setI(float i)
{
m_valI = i;
return this;
}
RaizCuadratica *RaizCuadratica::setX(float x)
{
m_valX = x;
return this;
}
RaizCuadratica *RaizCuadratica::setXX(float xx)
{
m_valXX = xx;
return this;
}
RaizCuadratica::sRaiz RaizCuadratica::GetRaiz()
{
float mmm = sqrtf( pow(m_valX,2) - ( 4 * m_valXX * m_valI ) );
return sRaiz( (-m_valX + mmm) / (m_valXX*2) , (-m_valX - mmm) / (m_valXX*2) );
}
void RaizCuadratica::GetRaiz( RaizCuadratica::sRaiz *output )
{
float mmm = sqrtf( pow(m_valX,2) - ( 4 * m_valXX * m_valI ) );
output->r1 = (-m_valX + mmm) / (m_valXX*2);
output->r2 = (-m_valX - mmm) / (m_valXX*2);
}