PROBLEME AVEC UNE BOUCLE

Signaler
Messages postés
248
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
15 mars 2007
-
Messages postés
248
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
15 mars 2007
-
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

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Si si tu peux bien évidement.
Quelle est la condition de sortie de la boucle ? A quel moment doit s'arreter la boucle ?

Shell
Messages postés
24
Date d'inscription
lundi 14 mars 2005
Statut
Membre
Dernière intervention
31 mars 2006

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 )..
Messages postés
24
Date d'inscription
lundi 14 mars 2005
Statut
Membre
Dernière intervention
31 mars 2006

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
}
Messages postés
248
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
15 mars 2007
32
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