Programme pascal calcul pi????

Fermé
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 - 29 févr. 2012 à 10:41
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 - 2 mars 2012 à 10:43
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
A voir également:

14 réponses

ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
29 févr. 2012 à 11:05
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
TianaMichael Messages postés 17 Date d'inscription mardi 28 février 2012 Statut Membre Dernière intervention 15 février 2013 1
29 févr. 2012 à 10:49
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é...
0
oups! ccm81 a raison, c'est pi au carré et non pas pi
0
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 5
29 févr. 2012 à 13:02
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
Bonjour

http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm
1
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 5
29 févr. 2012 à 15:15
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 5
29 févr. 2012 à 17:43
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
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 5
1 mars 2012 à 14:21
helpppppppppppppppp !!!!!
1
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
Modifié par ccm81 le 1/03/2012 à 15:21
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
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 5
1 mars 2012 à 16:05
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
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
1 mars 2012 à 20:58
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
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 5
1 mars 2012 à 21:49
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
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
2 mars 2012 à 09:45
voilà, c'est OK pour obtenir pi² en sortie

bonne suite
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
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
enseignant2012 Messages postés 10 Date d'inscription mercredi 29 février 2012 Statut Membre Dernière intervention 2 mars 2012 5
2 mars 2012 à 10:43
merci enormement ccm81
0