Я пытаюсь написать квази-Монте-Карло Приближение pi в C. Я еще не очень разбираюсь в этом, и я пытаюсь перевести свои навыки на основе python, поэтому я могу просто что-то игнорировать. В результате я получаю 0, и я не могу понять, почему. Как мне это исправить? Кроме того, я получаю сообщение об ошибке на последних двух звонках printf
, говорящих, что они типа double *
, а не double
. Так или иначе, это связано?Pi-аппроксимация в C - почему я получаю результат 0 для приближения?
#include <stdio.h>
/*
Tristen Wentling
montepithon.c
October 31, 2013
*/
int main(void)
{
float i,j,x;
float count=0,counter=0;
printf("Please enter the desired grid division size (n=?)");
scanf("%f", &x);
float y=x*x;
if(x==0){
printf("goodbye");
}
else if(x!=0){
for(i=0;i<=x;i++){
for(j=0;j<=x;j++){
float check=((i*i)*(1/y))+((j*j)*(1/y));
/*printf("%f\n", check);*/
if(check<=1){
count+=1;
}
else{
counter+=1;
}
}
}
}
else{
printf("error");
}
float prsum=count/y;
float ptsum=(1-counter)*(1/y);
double pirprox=4*prsum;
double pitprox=4*ptsum;
printf("%f\n", &pirprox);
printf("%f\n", &pitprox);
getchar();
}
предупреждения в C такие же, как ошибки. Не игнорируйте их. В этом случае компилятор сообщает вам, что вы передаете адрес переменной вместо самой переменной. Пожалуйста, следуйте его советам. В противном случае вы не увидите результат своего кода. Также: (1) SO не является сайтом для проверки кода, (2) если вы отправляете код (когда у вас есть конкретный технический вопрос), пожалуйста, отложите его правильно. –
Извините. Я обычно спрашиваю убунту и математику. Я думал, что здесь лучше всего подходить под описание. Где этот вопрос задают более правильно? – Tristen
Вы понимаете, что разделение разрешено, не так ли? Каждое появление '* (1/y)' в вашей программе будет быстрее и точнее (и короче), если оно было написано '/ y'. –