3次方程式の実数解の個数のプログラムについて…
C++で、3次方程式の実数解の個数を調べるプログラムを作ってみた(↓)のですが、実行したときに問題点があって困っています。
#include<stdio.h>
#include<math.h>
void main(void) /*3次方程式の実数解の個数*/
{
double a,b,c,d,D,A,B;
printf("f(x)=a*pow(x,3)+b*pow(x,2)+c*x+d=0 に対して、a,b,c,dの値を定めると、\n");
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
D=4*pow(b,2)-12*a*c;
A=(-b+sqrt(b*b-3*a*c))/(3*a);
B=(-b-sqrt(b*b-3*a*c))/(3*a);
if(a>0)
if(D<=0 || (D>0 && A>0) || (D>0 && B<0))
printf("実数解の個数は1個\n");
else
if(A<0 && B>0)
printf("実数解の個数は3個\n");
else
printf("実数解の個数は2個\n");
else
a=-a;
b=-b;
c=-c;
d=-d;
if(D<=0 || (D>0 && A>0) || (D>0 && B<0))
printf("実数解の個数は1個\n");
else
if(A<0 && B>0)
printf("実数解の個数は3個\n");
else
printf("実数解の個数は2個\n");
その問題点というのは、実数解の個数が2個と3個のときは、実行したときの結果として、
実数解の個数は2個
Press any key to continue
あるいは
実数解の個数は3個
Press any key to continue
と正しく表示されるのですが、実数解の個数が1個のときは、
実数解の個数は1個
実数解の個数は1個
Press any key to continue
と「実数解の個数は1個」が2回表示されてしまうのです。
なぜ、2回表示されるのか分かりません。
初心者なので、できるだけ詳しい解決法などよろしくお願い致します。