Programme pascal calcul pi????

enseignant2012 Messages postés 12 Statut Membre -  
enseignant2012 Messages postés 12 Statut Membre -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. TianaMichael Messages postés 39 Statut Membre 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. le père
       
      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. le père
       
      oups! ccm81 a raison, c'est pi au carré et non pas pi
      0
    3. enseignant2012 Messages postés 12 Statut Membre 5
       
      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
  3. le père
     
    Bonjour

    http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm
    1
  4. enseignant2012 Messages postés 12 Statut Membre 5
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. enseignant2012 Messages postés 12 Statut Membre 5
     
    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
  7. enseignant2012 Messages postés 12 Statut Membre 5
     
    helpppppppppppppppp !!!!!
    1
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  9. enseignant2012 Messages postés 12 Statut Membre 5
     
    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
  10. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  11. enseignant2012 Messages postés 12 Statut Membre 5
     
    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
  12. ccm81 Messages postés 11033 Statut Membre 2 434
     
    voilà, c'est OK pour obtenir pi² en sortie

    bonne suite
    1
  13. le père
     
    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
  14. le père
     
    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
  15. enseignant2012 Messages postés 12 Statut Membre 5
     
    merci enormement ccm81
    0