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

  • Votes
  • Date
  • Date décroissante
  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
    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. 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é...
      2. oups! ccm81 a raison, c'est pi au carré et non pas pi
      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.
    2. Bonjour

      http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm
      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. 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. 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. 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. 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. 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. 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.
                    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; ?