プロが教えるわが家の防犯対策術!

モンテカルロ法を用いて、三角錐の体積を求めたいのですが、わかりません。球の体積計算と、fortranの場合の三角錐計算のソースを参考にして途中まで作ったのですが、mx = max(1,1,1);がcalled object is not a functionエラーがでて、コンパイルができません。
正しいソースを教えてください。
#include <stdio.h>
#include <stdlib.h>
#define LOOPCOUNT 100000
#define LOOPSTEP 100000
main(){
int i,a1,b1,c1,mx,max, Count=0;
float x, y, z;
mx = max(1,1,1);
a1=1/mx;
b1=1/mx;
c1=1/mx;
for (i=1; i<=LOOPCOUNT; i++) {
x = rand()/(float)RAND_MAX;
y = rand()/(float)RAND_MAX;
z = rand()/(float)RAND_MAX;
if (x/a1+ y/b1 + z/c1<= 1.0)
Count++;
if (i % LOOPSTEP == 0)
printf("%7d 回 V=%f\n",
i,(float)i/i*pow(mx,3));
}}
ちなみに、三角錐はX,Y,Zがそれぞれ1の三角錐です。

A 回答 (1件)

> mx = max(1,1,1);がcalled object is not a functionエラー


「呼ばれたオブジェクトは関数ではない(直訳)」というエラーが出ています。その理由は、

> int i,a1,b1,c1,mx,max, Count=0;
ここで、maxはint型の変数であると言っているにもかかわらず、

> mx = max(1,1,1);
ここで、maxを関数として使っているためです。

> 正しいソースを教えてください。
max関数の仕様がわからないので、できかねます。
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございました。助かりました。

お礼日時:2008/06/09 20:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!