|
|
|
|
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;
}
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... } |