Programme en C pour calculer pi

Cricritos Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je fait appel a la générosité collective car j'ai un problème avec mon programme en C.
Je dois calculer la valeur de pi en utilisant la formule suivante : pi=(4*(1-(1/3)+(1/5)-(1/7)+(1/9)-(1/11)+.....)
Puis ensuite je dois afficher le résultat a plusieurs degrés différents . Voila le code auquel je parviens mais le problème est que le résultat est toujours 4 car la partie (1-(1/3)+(1/5)-(1/7)+(1/9)-(1/11)+.....) prend toujours la valeur 1. Bref je pense que le problème est en rapport avec le type de variable mais je ne suis arrivé a rien .
Merci d'avance!

Voici le programme en question:

#include <stdio.h>
#include <stdlib.h>
#include<math.h>

int main()
{
double pi=0;
int m;
int signe=0;
double D=1.0;


for (m=1;m<=1000000;m++);

{
if (signe==0)
{
pi=pi+(1/D);

signe=1;
}

else
{
pi=pi-(1/D);

signe=0;
}
D=D+2;
}
pi=4*pi;
printf("A 10^-2 , pi vaut %.2lf\n",pi);
printf("A 10^-3 , pi vaut %.3lf\n",pi);
printf("A 10^-4 , pi vaut %.4lf\n",pi);
printf("A 10^-5 , pi vaut %.5lf\n",pi);
printf("A 10^-6 , pi vaut %.6lf\n",pi);


system("pause");
return 0;
}
A voir également:

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
for (m=1;m<=1000000;m++);

cette boucle ne fait rien !!!

elle est déjà terminée...

le bloc que tu mets ensuite entre accolades n'est exécuté qu'une fois ;)

il ne faut pas mettre de ";" après le for !!!

sinon là c'est comme si tu faisais :
for (m=1; m<=1000000;m++) {
   ; // le corps du for est vide !!!
}

{
  //le reste de ton code que tu as mis entre accolade après le for
}





ensuite pour l'affichage des étapes, ton printf devrait être dans la boucle pour que tu puisses suivre les étapes...

dans le bloc for il faudrait rajouter qqchose comme :

switch(m) {
case 10:
//à la dixième étape
break;
case 100:
// à la 100ème étape
break;
etc...
}
0