2013年4月24日水曜日

二次方程式の解を求めるプログラム

二次方程式の解を求めるプログラムです。
strtod関数の使い方の例になればと思います。
数字以外の入力が発生した場合、誤入力として再入力を促します。
※66行目は不要です
#include 
#include 
#include 

bool inputCheck(char* e){
 if(*e == '\0'){
  return true;
 }else{
  printf("Discover an incorrect input -> %s\n", e);
  return false;
 }
}

void inputParametor(double *a,double *b, double *c){
 char input[255]={0};
 char *e;
 printf("Please Input Equation Parametor\n");
 do{
  printf("a=");
  scanf("%s",input);
  *a=strtod(input,&e);
 } while (!inputCheck(e));
 
 do{
  printf("b=");
  scanf("%s",input);
  *b=strtod(input,&e);
 } while (!inputCheck(e));
 
 do{
  printf("c=");
  scanf("%s",input);
  *c=strtod(input,&e);
 } while (!inputCheck(e));
 printf("Equation:\n%lfx^2+%lfx+%lf=0\n",*a,*b,*c);
}
 
void main(void){
 double a=0.0,b=0.0,c=0.0;
 double d=0.0;
 double x1=0.0,x2=0.0;

 inputParametor(&a,&b,&c);
 d = pow(b,2) - (4*a*c);
 printf("////////////////Answer///////////////////\n");
 printf("a =\t%lf\n",a);
 printf("b =\t%lf\n",b);
 printf("c =\t%lf\n",c);
 printf("d =\t%lf\n",d);
 if (d < 0)
 {
  printf("No solution\n");
 }else{
  if(d == 0){
   x1 = -b/(2*a);
   printf("x =\t%lf\n",x1);
  }else if(d > 0){
   x1 = (-b + sqrt(d))/(2*a);
   x2 = (-b - sqrt(d))/(2*a);
   printf("x1 =\t%lf\n",x1);
   printf("x2 =\t%lf\n",x2);
  }
 }
 system("PAUSE");
}

0 件のコメント:

コメントを投稿