Programme pascal calcul pi????

Bonjour,
qcq un peut me donner la solution de cette exercice
ecrire bprg pascal qui permet de calculer une valeur approchée de pi

pi=6+6/22+6/32+6/42+..............................+6/n2
le calcul s'arrte lorsque la difference entre deux termes succesives devient < .0.0001

14 réponses

  1. bonjour

    1. au passage cette série due à Euler, approche pi² et non pi
    pi² = 6(1+1/2²+1/3²+......)

    2. pour qu'on puisse t'aider, et non faire le pb à ta place, tu devrais nous montrer où tu en es (un algorithme par exemple) de tes réflexions

    bonne suite
    4
    1. je sait pas exactement ce que tu veut faire mais pi est égal à 4 fois l'arc tangente de 1 (En vb ça s'écrit pi=4*atn(1))
      1
      1. Bonjour

        La formule de enseignant2012 (qui est sûrement un élève et pas un enseignant, ruse grossière...) est exacte aussi, à condition de lire 22,32,42,n2 comme 2 au carré, 3 au carré, 4 au carré, n au carré...
        0
      2. oups! ccm81 a raison, c'est pi au carré et non pas pi
        0
      3. desolé pour la faute oui ce ca:

        valeur approche de pi² et non pi
        pi² = 6(1+1/2²+1/3²+......)
        voila ma solution
        program calcul;
        uses wincrt;
        var
        xpre,pi:real;

        function calc:real;
        var
        xpre ,x:real;
        i:integer;
        begin

        i:=1;
        repeat
        x:=xpre+6/sqrt(i);
        xpre:=x;
        i:=i+1;
        until (abs(x-xpre)<0.0001);
        end;
        begin

        xpre:=6;
        pi:=calc;
        write('la valeur est ',pi);
        end.
        0
    2. Bonjour

      http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm
      1
      1. merci le pere
        voila de nouveau
        program calcul;
        uses wincrt;
        var
        xpre,pi:real;

        function calc:real;
        var
        xpre ,x:real;
        i:integer;
        begin
        xpre:=6;

        i:=1;
        repeat
        x:=xpre+6/sqrt(i);
        xpre:=x;
        i:=i+1;
        until (abs(x-xpre)<0.0001);
        end;
        begin

        xpre:=6;
        pi:=calc;
        write('la valeur est ',pi);
        end.
        1
        1. j'ai initialisé xpre:=6 car c la valeur du premier terme de l'expression est 6
          puis xpre prend la nouvelle somme obtenue qui est x
          cest juste une idée
          si possible solution et merci d'avance
          1
          1. helpppppppppppppppp !!!!!
            1
            1. re

              RQ1. la fonction carré est sqr et non sqrt (racine carrée)
              RQ2. tiens compte des remarques de le père,
              - quand tu fais ton test abs(x-xpre)<0.0001, comme dès le premier tour de boucle on a, x=xpre .....
              - xpre := 6 n'a rien à faire dans le programme principal
              RQ3. le résultat de la fonction calc n'est jamais renvoyé, ça se fait avant le end; de la fonction calc, avec calc := xpre
              RQ4. quand tu as écrit un algorithme, fais un tableau de suivi des variables et des tests, histoire de voir comment évolue ton programme

              bonne suite
              1
              1. merci ca devient coome ca la solution???

                program calcul;
                uses wincrt;
                var
                xpre,pi:real;

                function calc:real;
                var
                xpre ,x:real;
                i:integer;
                begin
                xpre:=6;

                i:=1;
                repeat
                x:=xpre+6/sqr(i);
                xpre:=x;
                i:=i+1;
                until (abs(x-xpre)<0.0001);
                calc:=x;
                end;
                begin

                pi:=calc;
                write('la valeur est ',pi);
                end.
                1
                1. re

                  il reste quelques erreurs
                  1. mauvaise gestion des deux variables x et xprec (dans l'ordre)
                  - au depart x initialisé à 0
                  - dès l'entrée dans la boucle xprec = x
                  - calcul de la nouvelle valeur de x
                  - maj de i
                  2. calc renvoie pi² donc la le programme principal pi = racine(pi²)

                  RQ1. le type longint pour i me parait plus adapté (le type integer s'arrête à 32767)

                  bonne suite
                  1
                  1. merci bcp
                    en principe c'est bon

                    program calcul;
                    uses wincrt;
                    var
                    pi:real;

                    function calc:real;
                    var
                    xpre ,x:real;
                    i:integer;
                    begin
                    x:=0;
                    i:=1;
                    repeat
                    xpre:=x;
                    x:=xpre+6/sqr(i);
                    i:=i+1;
                    until (abs(x-xpre)<0.001);
                    calc:=x;
                    end;
                    begin

                    pi:=calc;
                    write('la valeur de pi au carré est ',pi);
                    end.
                    1
                    1. voilà, c'est OK pour obtenir pi² en sortie

                      bonne suite
                      1
                      1. Vérifie l'ordre de tes instructions : tel que tu as écrit ton programme, en fin de boucle, xpre est toujours égal à x, donc x-xpre vaut toujours 0...
                        Tu as juste deux lignes à inverser. je te laisse réfléchir.
                        0
                        1. C'est bien de penser à initialiser xpre dans la fonction. Mais est ce-bien la bonne valeur ?

                          Et à quoi sert la variable xpre en dehors de la fonction ?

                          Et à quoi sert la remarque que je t'ai faite dans mon message précédent ? Tu n'en as tenu aucun compte. Combien vaut x-xpre après avoir exécuté la ligne xpre:=x; ?
                          0
                          1. merci enormement ccm81
                            0