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 -
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;
}
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:
- Programme en C pour calculer pi
- Comment calculer la moyenne sur excel - Guide
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
1 réponse
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...
}