- ベストアンサー
c言語 プログラミング(初心者)
解を判定するプログラミングを作成したのですが、a,b,cを0,1,2と入力したときに解に0.00000が出てきて解がおかしくなります。 どなたか詳しい方教えてください。また簡潔にできる点などありましたらご指摘お願いします。 #include <stdio.h> #include <math.h> int main (void) { double a,b,c,d,x1,x2; printf("ax^2+bx+c=0 の係数を入力してください\n"); scanf("%lf %lf %lf",&a,&b,&c ); if(a==0){ if(b==0) { printf("解は存在しません\n"); } else { x1=-c/b; printf("解は %f です\n",x1); } } else { d=b*b-4*a*c; if(d>=0){ x1=(-b+sqrt(d))/(2.0*a); x2=(-b-sqrt(d))/(2.0*a); if(d==0){ printf("解は %f (重解)です\n",x1); } else { printf("解は %f と %f です\n",x1,x2); } } else { printf("実数解は存在しません(虚数解)\n"); } } return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まずどこまで自分で確認したのでしょうか。 scanfで入力したa,b,cの値をprintfで出力して値を確認しましたか? やれることをしておくと自分で解決できる確率も上がり また人に聞くにしてもここまではやったという情報を相手に与えることで正解に近づきやすくなるものです。 a,b,cの入力は 0 スペース 1 スペース 2 エンター しましたか?または 0 エンター 1 エンター 3 エンター でしょうか まずこれを試してみてください。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
確認ですが, 「0,1,2」と入力したのですか? 「0 1 2」ではなく?
お礼
回答遅れてすいません。 エンターでしてみるとなりました! ありがとうございました^^