#include <stdio.h>
#include <stdlib.h>
int main()
{
double pi;
printf("pi=%f\n",pi);
}
double calc_pi()
{double x,y,i,pi;
int count;
for(i=0;i<=1000;i++){
x=(double)rand() / (RAND_MAX + 1);
y=(double)rand() / (RAND_MAX + 1);
if((x*x+y*y)<1.0)
{count+=1.0;}
}
pi=count/1000*4.0;
return (int)pi;
}
これで円周率が出てくれないのはなぜ??
円周率が出ない。。。
Re:円周率が出ない。。。
>これで円周率が出てくれないのはなぜ??
・calc_pi 関数を呼びだしていない
・calc_pi 関数のプロトタイプ宣言がない
・countを0で初期化していない
・pi=count/1000*4.0 count/1000はint型同士の割り算なので結果もint型になってしまう
・return (int)pi int型にキャストしたのでは、小数点以下の値が帰らない
など
・calc_pi 関数を呼びだしていない
・calc_pi 関数のプロトタイプ宣言がない
・countを0で初期化していない
・pi=count/1000*4.0 count/1000はint型同士の割り算なので結果もint型になってしまう
・return (int)pi int型にキャストしたのでは、小数点以下の値が帰らない
など
Re:円周率が出ない。。。
実際にうごいてるのは
/*
double pi;
printf("pi=%f\n",pi);
*/
これだけ…
>int count;
int(整数)でいいんですか?
どちらかというと「i」のほうが整数っぽい
/*
double pi;
printf("pi=%f\n",pi);
*/
これだけ…
>int count;
int(整数)でいいんですか?
どちらかというと「i」のほうが整数っぽい
Re:円周率が出ない。。。
そうですか…
計算が楽になるかな~と思ったのですが…
それに1.0ずつ足していたので整数型ではないと考えたんですが、
ダメみたいですね。すいませんでした。
計算が楽になるかな~と思ったのですが…
それに1.0ずつ足していたので整数型ではないと考えたんですが、
ダメみたいですね。すいませんでした。
Re:円周率が出ない。。。
> それに1.0ずつ足していたので整数型ではないと考えたんですが、
> ダメみたいですね。すいませんでした。
違和感を感じる着眼点は正しいですが、結論が逆でしたね。
1.0ずつ足しているのに整数型、ではなく、
整数型なのに1.0ずつ足している、です。
> ダメみたいですね。すいませんでした。
違和感を感じる着眼点は正しいですが、結論が逆でしたね。
1.0ずつ足しているのに整数型、ではなく、
整数型なのに1.0ずつ足している、です。
Re:円周率が出ない。。。
#include <stdio.h>
#include <stdlib.h>
double calc_pi(void);
int main()
{
double pi;
pi = calc_pi();
printf("pi=%lf\n",pi);
}
double calc_pi()
{double x,y,pi,count=0;
int i;
for(i=0;i<=1000;i++){
x=(double)rand() / (RAND_MAX + 1);
y=(double)rand() / (RAND_MAX + 1);
if((x*x+y*y)<1.0)
{count+=1.0;}
}
pi=count/1000*4.0;
return pi;
}
こうですかね?
#include <stdlib.h>
double calc_pi(void);
int main()
{
double pi;
pi = calc_pi();
printf("pi=%lf\n",pi);
}
double calc_pi()
{double x,y,pi,count=0;
int i;
for(i=0;i<=1000;i++){
x=(double)rand() / (RAND_MAX + 1);
y=(double)rand() / (RAND_MAX + 1);
if((x*x+y*y)<1.0)
{count+=1.0;}
}
pi=count/1000*4.0;
return pi;
}
こうですかね?
