- ベストアンサー
2次方程式の解 Cプログラミング
C言語でのプログラムの添削をお願いします。 2次方程式の解を求めるものなのですが。 #include<stdio.h> #include<math.h> main(){ double a,b,c,d; double x1=0; double x2=0; scanf("%lf %lf %lf" ,&a,&b,&c); printf("a=%f b=%f c=%f\n" ,a,b,c); d=b*b-4*a*c; if(d>0){ x1=(-b+sqrt(d))/2*a; x2=(-b-sqrt(d))/2*a; printf("x=%f,%f\n" ,x1,x2); }else if(d<0){ x1=-b/2*a; x2=sqrt(-d)/2*a; printf("x=%f+%fi,%f-%fi\n" ,x1,x2,x1,x2); }else{ printf("x=%f\n" ,x1); } return 0; } このとき、 a=-7,b=2,c=-1 を与えると x=7.000000+-17.146428i,7.000000--17.146428i という値が返ってきます。 他にも、虚数解のときに間違った値が返ってきてしまう気がするのですが、いかがでしょうか? 実数解のときは正しいようです。 回答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- akayoroshi
- ベストアンサー率50% (46/91)
回答No.3
- titokani
- ベストアンサー率19% (341/1726)
回答No.1
関連するQ&A
このQ&Aのポイント
- プリンターPX-S740でマゼンタ色が印刷されない問題について
- マゼンタ色がブラックに近い茶色のようなくすんだ色で印刷される現象について
- EPSON社製品のインクパターン印刷時にマゼンタ部分が正しく印刷されない問題の対処法
お礼
確かにそうですね。 ありがとうございます。 数学苦手とか以前の問題ですねこれは。 ところで、修正したにも関わらず a=-7.000000 b=2.000000 c=-1.000000 x=0.142857+-0.349927i,0.142857--0.349927i と、 +- なんてものがでてきてしまうのですが、それはどうしたらよいですか?