• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ax^2+bx+c=0の解を求めたいのですが・・(初歩的です))

ax^2+bx+c=0の解を求める方法

このQ&Aのポイント
  • 質問文章の内容は、ax^2+bx+c=0の解xを求める方法についてです。
  • 質問者は、a、b、cを入力して解xを求める方法や、実解・虚数解・重解の場合の取り扱いについて分かりません。
  • コードの一部にも問題がある可能性がありますので、アドバイスを求めています。

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

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

while(a=0); は、 while(a==0.0); だと思います。 #1の方と同じだけど sqrtがdistの間違い ans = (-b+dist(a,b,c))/(2*a); が distの前にsqrtが要る ans = (-b+sqrt(dist(a,b,c)))/(2*a); ans = (-b-sqrt(dist(a,b,c)))/(2*a); の2つの場合を考えないといけない。 distの値で 0:重解 -:虚数解 +:実解 のように場合分けしないといけない

yellowtail-ayari
質問者

お礼

たくさん間違えていてすみません。ご指摘ありがとうございました。 場合わけも具体的に考えたらすぐわかることでしたね。ありがとうございました。

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

課題のようなので、少し意地悪をすると... > printf("%lf", ans); %lfを使っているということはC99だと思います。 C99であれば、 int quadratic(double complex ans[2], double a, double b, double c) {  double D = b*b - 4*a*c;  ans[0] = (b + csqrt(D)) / (2 * a);  ans[1] = (b - csqrt(D)) / (2 * a);  return (D > 0) - (D < 0); } のように複素数型を使えば、虚数解でも普通に計算できるので便利です。

yellowtail-ayari
質問者

お礼

色々知らないことばかりで勉強になります。ありがとうございました。

  • ftomo100
  • ベストアンサー率41% (297/723)
回答No.1

課題だと思いますのでヒントだけ。 double sqrt sqrt -> distの間違いですよね? distの値によって処理(解の表示)を分岐させれば良いと思う。 dist>0 と dist=0 と dist<0

yellowtail-ayari
質問者

お礼

そうですね。間違えてました。ありがとうございました。

関連するQ&A