Calculer pi

Résolu
CyRux Messages postés 164 Date d'inscription   Statut Membre Dernière intervention   -  
CyRux Messages postés 164 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous,
voila j'aimerai faire un programme qui calcule pi ... je me suis donc basé sur cet algorithme : ? = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15)...
et j'ai donc créer ce code
#include <stdio.h>

int main ()
{
int b = 1;
float pi = 4 / b;
int i;
for (i=0; i < 10; i++)
{
b = b + 2;
pi = pi - 4 / b;
printf ("%f", pi);
b += 2;
pi = pi + 4 / b;
printf ("%f", pi);
}
return 0;
}

mais sa me donne "3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000"
Merci d'avance

ps : je débute en C

1 réponse

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Alors tout d'abord, je te conseille d'utiliser des double plutôt que des float.

    b = b + 2; et b+=2;
    Autant mettre la même instruction pour uniformiser ;-).

    Et sinon, l'erreur : pi = pi - 4 / b;
    4/b est une division de deux entiers. En C, une telle division renvoie la partie entière (donc 0). Pi vaudra donc 4-1-0-0...=3.
    Mets plutôt : pi=pi-4.f/b; (si tu travailles en float) ou pi=pi-4./b; (si t'es passé en double).
    N'oublie pas de modifier aussi pour : pi=pi+4/b;

    Cdlt,

    Google is your friend
    0
    1. CyRux Messages postés 164 Date d'inscription   Statut Membre Dernière intervention   3
       
      Merci beaucoup sa marche sa marche, je suis resté en float, car en double sa marchais pas (gcc me signalais une erreur)
      le seul problème c est que mon resultat n'a que 6 nombres après la virgule ...
      j'ai donc penser a le multiplier par 10000000000000[...]000 mais je ne sais pas comment faire pour que mon resultat soit juste ...
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Si gcc te signale une erreur, c'est qu'il y a quelque chose à corriger ;-).
      N'hésite pas à poster ton code avec la version double ainsi que les erreurs signalés par gcc pour qu'on puisse voir d'où vient le problème.

      le seul problème c est que mon resultat n'a que 6 nombres après la virgule ...
      Non, resultat a bien plus de chiffres après la virgule. Mais tu demandes l'affichage de seulement 6 chiffres après la virgule (par défaut).
      Si tu en veux 10 : printf("%.10f\n", pi);
      Note : n'oublie pas de mettre un caractère séparateur pour que ça soit plus lisible.

      Cdlt,
      0
      1. CyRux Messages postés 164 Date d'inscription   Statut Membre Dernière intervention   3 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        C'est bon sa marche ^^ Merci beaucoup
        pour info voici le code final :
        #include <stdio.h>

        int main ()
        {
        int b = 1;
        double pi = 4 / b;
        int i;
        for (i=0; i < 1000000; i++)
        {
        b += 2;
        pi = pi - 4./b;
        printf ("%.200f\n", pi);
        b += 2;
        pi = pi + 4./b;
        printf ("%.200f\n", pi);
        }
        return 0;
        }

        mais le seul problème c'est que l'algorithme que j'ai utilisé n'est pas très bon ... il faut 1 000 000 de calcul pour avoir 5 décimales de bonnes ...

        ps : Désolé pour le temps de réponse mais je n'était pas chez moi ...
        0