I have to write a programme in C++ Builder 4 that will calculate all roots of a quadratic equation, and am struggling to produce complex roots, it gives a message of
the first complex root = -1.5+ i+.AN
the second complex root = -1.5- i+.AN
it also gives the worng answer when the roots are equal, giving one root as 0.
this is the code
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <complex.h>
int main ()
{
float a,b,c,d,root1, root2, real1, real2,imag1,imag2; //define variables
Code:
cout<<"p(x)= ax^2 + bx + c = 0 " << endl; //define the equation to be solved
cout<<" " << endl;
cout<<"enter the 3 parameters a, b, c: " << endl; //user enters 3 parameters to be calculated
cin >>a>>b>>c;
{
if (a==0) //if a is 0 then this is not a quadratic equation form
cout << "a cannot be 0 in a quadratic equation" << endl;
}
if(a==0){
if (b==0) //if a and b are 0 this is not a quadratic equation
cout<< "both a and b cannot be 0 in ax^2 + bx + c =0" << endl;
}
{
d = b*b-4*a*c;
{if (d>0) // if d>0 this will give real roots
{
root1= (-b +(sqrt(b*b-4*a*c)))/(2*a);
root2= (-b-(sqrt(b*b-4*a*c))) / (2*a);
cout <<"the first root = " << root1 << endl; //outputs the first root
cout <<"the second root = " << root2 << endl; //outputs the second root
}
}
{
if(d<0) // if d<0 this will give complex roots
real1= ((-b)/(2*a)) ;
real2= ((-b)/(2*a)) ;
imag1= (((sqrt(b*b-4*a*c))/(2*a))) ;
imag2= (((sqrt(b*b-4*a*c))/(2*a))) ;
cout <<"the first complex root = " << real1 <<"+ i" << imag1 << endl; //outputs the first root
cout <<"the second complex root = " << real2 << "- i" << imag2 << endl; //outputs the second root
}
}
getch(); // keeps the window open until a key is pressed
return 0;
}
could anyone help me with this, i'm not very good with c++. thanks