• ベストアンサー

x^2+2x+1=0

x^2+2x+1=0をとく関数プログラムです。 うまくできません。どこが間違っているのでしょうか。 教えて下さい。 #include<stdio.h> #include<math.h> void input_keisuu(double a,double b,double c); void solve(double a,double b,double c); int main(void) { double a,b,c; input_keisuu(a,b,c); solve(a,b,c); return 0; } void input_keisuu(double a,double b,double c) { puts("二次関数a*x^2+b*x+c=0を解きます。"); a=1; b=2; c=1; puts("a=1"); puts("b=2"); puts("c=1"); } void solve(double a,double b,double c) { double d; double x; d=b*b-4*a*c; printf("判別式d= %f\n",d); x=(-b+ sqrt(d))/(2*a); printf("二つの解のうち大きい方はx=%f\n",x); }

質問者が選んだベストアンサー

  • ベストアンサー
noname#22058
noname#22058
回答No.2

input_keisuu関数でセットした係数が、 solve関数に渡っていません。 input_keisuu関数の引数は、各係数のアドレスにしてください。

santye
質問者

お礼

早速の回答ありがとうございました。 解決できました。

その他の回答 (1)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

#include<stdio.h> #include<math.h> void input_keisuu(double* a,double* b,double* c); void solve(double a,double b,double c); int main(void) { double a,b,c; input_keisuu(&a,&b,&c); solve(a,b,c); return 0; } void input_keisuu(double* a,double* b,double* c) { puts("二次関数a*x^2+b*x+c=0を解きます。"); *a=1; *b=2; *c=1; puts("a=1"); puts("b=2"); puts("c=1"); } void solve(double a,double b,double c) { double d; double x; d=b*b-4*a*c; printf("判別式d= %f\n",d); x=(-b+ sqrt(d))/(2*a); printf("二つの解のうち大きい方はx=%f\n",x); }

関連するQ&A