こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

main関数の中でパラメータを宣言

c言語で積分をしています。

a~bまで積分する関数を
dobule integral(double (*f)(double), double a, double b)
{
・・・・・・
return s; /*sが計算結果*/
}
としています。


fx=x*x を積分するときは
double fx(double x)
{
return x*x;
}
を用意して、

main()
{
double ans = integral(fx, 0.0, 1.0);
}
という具合で現在やっています。


本題なのですが、
main関数の中でxを宣言して、そのxで同じように積分をしたいのです。
どうすればよいのでしょうか?
良い方法があれば教えて頂きたいです。

投稿日時 - 2003-11-04 02:08:29

QNo.696457

すぐに回答ほしいです

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

No2の方が既に書いてますように、gxを定義して、gxを呼び出す形になると思います。mainの中で、x1=x/3を定義するのは、無理があります。ここでxは、本来、integral関数の中で、a~bまでxを変化させる時の用途で用いられます。従って、integral関数の中でのみ、意味があります。
従って
double gx(double x)
{
double x1;
x1 = x/3.0;
return fx(x);
}
の関数を定義します。
main関数で
ans = integral(gx,0.0,1.0);
とすれば、integral関数の中からgxを呼び出すはずですので、このようにするのが最も素直な方法かと思います。

投稿日時 - 2003-11-04 21:51:13

お礼

ありがとうございました。
いろいろ考慮しているところです。

投稿日時 - 2003-12-06 17:24:25

ANo.3

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

「main関数の中で」というのは、何をなさりたいのかよく分かりませんが、
(x/3)*(x/3)を積分したいのであれば、手っ取り早いのは
double gx(x){ return fx(x/3.0); }
として、integralの引数にgxを渡すことですよね。
それではだめなのでしょうか。

投稿日時 - 2003-11-04 17:46:09

ANo.1

すいません。質問の意味がよくわかりません。
>main関数の中でxを宣言して、そのxで同じように積分をしたいのです。
xとは、変数名のことですか。それとも関数名のことですか。
もし、fx=xを積分したいのなら、
double fx(double x)
{
return x;
}
とすれば、良いと思いますが。
なにをなさりたいのか、もうすこし具体的に説明していただけませんでしょうか。

投稿日時 - 2003-11-04 12:32:16

補足

すいませんでした。
具体的に説明させてもらいます。

いまfxは
double fx(double x)
{
   x*x;
}
として、変えないとします。

で、(x/n)^2 や、(x-m)^2 を積分したいときに、
main関数の中で double x1 を宣言して
x1 = x1/n;
とします。
このx1をfxのxとして積分したいのです。

このとき、各関数をどのように呼び出して受け渡せばいいのかが分かりません。

どうも説明がしにくいのですが、伝わるでしょうか?

投稿日時 - 2003-11-04 15:44:27

お礼

たびたびすいません。
要するに、
double fx(double x)
{
return x*x;
}
として、(x/3)*(x/3) を積分するには?ってことです。
mainの中で
double x, x1; double (*func)(double);

x1 = x/3;
func=fx;
(*func)(x_dash);
integral(…, func)
としてもうまくいかないんです。

投稿日時 - 2003-11-04 16:36:29

あなたにオススメの質問