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 件のコメント:
コメントを投稿