PROBLEME AVEC UNE BOUCLE

tekila_bandita Messages postés 248 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 15 mars 2007 - 27 févr. 2006 à 13:09
tekila_bandita Messages postés 248 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 15 mars 2007 - 5 mars 2006 à 16:42
Bonjour,
j'ai un probleme, je n'arrive pas à réaliser une boucle de ce type :
2/pi = 2/sqrt(2) + 2/sqrt(2+sqrt(2)) + 2/sqrt(2+sqrt(2+sqrt(2)))....

je ne sais pas si l'on peut réaliser un tel type de boucle...

Mais voila, si quelqu'un sait comment faire,ben MERCI !

4 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
27 févr. 2006 à 14:42
Si si tu peux bien évidement.
Quelle est la condition de sortie de la boucle ? A quel moment doit s'arreter la boucle ?

Shell
0
fetsr Messages postés 24 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 31 mars 2006
28 févr. 2006 à 23:17
Ton sujet est rigolo. Il semblerait qu'il s'agisse d'une suite. Tu peux simplifier ton probleme en le posant de la facon suivante:
f(n) = sqrt(2 + f(n-1)) si n >= 1
et f(0) = sqrt(2)
Tu obtient alors:
2/pi = Somme [x de 0 à n] 2/f(x)
en C, ca donne qqchose comme ca:

double fonctionF(int valeur)
{
if(valeur <= 0)
return sqrt(2);
else
return(fonctionF(valeur -1);
}

main()
{
double deux_sur_pi = 0.0;
int nb_iterations = 10; // c'est ici que tu donnes la precision que tu veux avoir
int tmpIter;
for(tmpIter = 0; tmpIter <= nb_iterations ; tmpIter++)
deux_sur_pi = deux_sur_pi + fonctionF(tmpIter);
// au final, tu peux afficher ta valeur si tu veux
}

NB: je ne l'ai pas testé, je te laisse le faire il s'agit bien sur d'un exemple que tu peux ensuite adapter (et surtout corriger )..
0
fetsr Messages postés 24 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 31 mars 2006
28 févr. 2006 à 23:38
Petits coorectifs au passage :

double fonctionF(int valeur)
{
if(valeur <= 0)
return sqrt(2);
else
return 2.0 + fonctionF(valeur -1);
}

main()
{
double deux_sur_pi = 0.0;
int nb_iterations = 10; // c'est ici que tu donnes la precision que tu veux avoir
int tmpIter;
for(tmpIter = 0; tmpIter <= nb_iterations ; tmpIter++)
deux_sur_pi = deux_sur_pi + 2.0 / fonctionF(tmpIter);
// au final, tu peux afficher ta valeur si tu veux
}
0
tekila_bandita Messages postés 248 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 15 mars 2007 33
5 mars 2006 à 16:42
Euh ben la boucle n'a pas vraiment de condition de sortie, elle à simplement un nombre d'execution, donc c'est juste une variablie intitialisé à un qu'on itere a chaque fois jusqu'à obtenir le nombre d'execution voulu....

Mais j'ai pas bien compris en faite, tu est sur qu'elle marche ta fonction
0
Rejoignez-nous