• ベストアンサー

二次方程式の解き方

初心者です。自力で解こうとしましたが、どうしてもわからないので質問させていただきます。 問題 2次方程式ax^2+bx+c=0 (ただし aは0でない)の解を求めよ。ただし、a,b,c(実数)はキーボードから入力し、判別式d=b*b-4*a*cが正か0か負かについて処理せよ。 虚数解についてですが、2+3iや4+2iのようなかんじで答えを出さなければいけないそうです。 次に、私が途中まで作ったプログラミングです。 #include<stdio.h> #include<math.h> int main(void) { double a,b,c,x1,x2,i; printf("ax^2+bx+c=0のa b cを入力してください >>>"); scanf("%lf %lf %lf", &a,&b,&c); if(a==0) { if(b==0.0) { printf("係数がおかしい。\n"); } else { x=-c/b; printf("解は、%gです。\n", x1); } } else { D=b*b-4*a*c; if(D>=0.0) { printf("解は重解となり%gです。\n", x1); } else { printf("解は%gと%gです。\n", x1,x2); } } else { ここまで出来ました。一応、実数解と重解の部分のプログラミングは正解しているようです。この次の部分、つまり、虚数解を求める部分のプログラミングが出来ません。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

D<0.0のとき、 実数部は、 -b/(2*a) 虚数部は、 sqrt(-D)/(2*a) で計算すればいいのでは?

loed83
質問者

お礼

お~、できました!ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

x=-c/b;→x1=-c/b; D==0.0の場合重解 D>0.0の場合解は2つ D<0.0の場合虚数解 √(-5)の様になった場合 √5*√-1=√5*iであることを使う。

loed83
質問者

お礼

あ、確かにxをx1にしてないのはおかしいですね。アドバイスありがとうございます。

関連するQ&A