Obtenir un double a partir d'un calcul avec des int.
Godefroy Leys
Messages postés
1
Statut
Membre
-
jisisv Messages postés 3678 Statut Modérateur -
jisisv Messages postés 3678 Statut Modérateur -
Bon je vais éclaircir le problème. N'ayant pas grand chose a faire j'ai voulut écrire un petit programme pour estimer la valeur de pi suivant la méthode monte carlo. Sauf que j'ai rencontrer un petit problème la valeur de pi et par définition un nombre a virgule, or ma méthode ne nécessite que l'utilisation de deux valeur entière donc au début j'ai déclarer mais deux variable comme des int. Sauf que du coup quand j'effectue le calcul de la valeur de pi a partir de ces int cela me renvoie automatiquement une valeur entière, j'ai bien trouver une solution en déclarant mais deux variable en double mais je trouve que ceci et un peu artificiel donc pourriez vous me dire comment je peu modifier mon code en gardant les variable interieur et exterieur en int.
Voici le code :
Voici le code :
int main(void){
time_t t;
t = time(&t);
srand48((long) t);
double x,y,r,pi,interieur=0,exterieur=0;
int N;
cout<<"Entrer le nombre de point a répartir plus il seras grand, plus le nombre de point et grand plus l'estimation de pi seras bonne."<<endl;
cin>>N;
for(int i=0;i<N;i++){
x=drand48();
y=drand48();
r=sqrt(x*x+y*y);
if(r>1){exterieur=exterieur+1;}else{interieur=interieur+1;};
};
cout<<"Nombre de points a l'interieur du cerlcle = "<<interieur<<endl;
cout<<"Nombre de points hors du cercle = "<<exterieur<<endl;
pi=(4*interieur)/(exterieur+interieur);
cout.precision(15);
cout<<"pi = "<<pi<<endl;
return 0;
}
A voir également:
- Obtenir un double a partir d'un calcul avec des int.
- Double ecran - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Whatsapp double sim - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Double driver - Télécharger - Pilotes & Matériel
1 réponse
Ceci fonctionnera mieux:
processus:
L'utilisation de 4.0 forcera l'évaluation en flottant.
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
#include <iostream>
#include <stdlib.h>
#include <math.h>
int main(void){
time_t t;
t = time(&t);
srand48((long) t);
double x,y,r,pi,interieur=0,exterieur=0;
int N;
std::cout<<"Entrer le nombre de point a répartir plus il seras grand, plus le nombre de point et grand plus l'estimation de pi seras bonne."<<std::endl;
std::cin>>N;
for(int i=0;i<N;i++){
x=drand48();
y=drand48();
if( x*x+y*y >1 )
{
exterieur++;
}
else
{
interieur++;};
};
std::cout<<"Nombre de points a l'interieur du cerlcle = " << interieur << std::endl;
std::cout<<"Nombre de points hors du cercle = "<< exterieur<< std::endl;
pi=(4.0 * interieur) / (exterieur + interieur);
std::cout.precision(15);
std::cout<<"pi = "<< pi<< std::endl;
return 0;
}
processus:
johand@bata:~/src/CCM/C$ ./carlo Entrer le nombre de point a répartir plus il seras grand, plus le nombre de point et grand plus l'estimation de pi seras bonne. 10000 Nombre de points a l'interieur du cerlcle = 7867 Nombre de points hors du cercle = 2133 pi = 3.1468
L'utilisation de 4.0 forcera l'évaluation en flottant.
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)