虚数解の表示
Ax^2+Bx+Cの形の二次関数の解を計算するプログラムです
#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c,d,x1,x2,real,image;
printf("A=");
scanf("%lf",&a);
printf("B=");
scanf("%lf",&b);
printf("C=");
scanf("%lf",&c);
if(a==0){x1=-c/b;
printf("X=%5.2lf\n",x1);
}
if(a!=0.0){d=sqrt(pow(b,2.0)-4*a*c);
if(d<0.0){
real=(-b)/(2*a);
image=sqrt(-d)/(2*a);
printf("実数=%5.2lf\n",real);
printf("虚数=±%lfi\n",image);}
else if(fabs(d)<0.0){
x1=(-b)/(2*a);
printf("X=%5.2lf\n",x1);}
else if(d>0.0){
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("X1=%5.2lf\n",x1);
printf("X2=%5.2lf\n",x2);}
}
return 0;}
判別式d<0、d>0、d=0で分けています
判別式dが負になるとき(虚数解の部分)はそのままではsqrtが使えないので、-dを入れてみたのですがうまくいきません
どのように修正すればよいのかご教示願います
よろしくお願いします
お礼
ありがとうございます。 その通りでした x^3-1=(x-1)(x^2+x+1) が正しいです、すみませんでした。。 (a^2+a+1)=0というところまでは理解できたのですが 左辺にも x=a が代入されている状態という所からわからなくなってしまいました。この部分、 (x^2+x+1) の解をaとして代入したのに全体の式 x^3-1=(x-1)(x^2+x+1)のxにaを代入しないといけないのでしょうか?私は代入ということが理解できていないのかもしれませんが宜しくお願い致します。