|
|
Probleme sur un programme en C |
|
|---|---|---|
|
OverdOzed
![]()
Inscrit:
01/01/2012 00:13 Post(s): 305
|
Salut à tous blenderien, je sais que ce sujet n'a pas trop sa place sur un forum en rapport avec la 3d mais les autres forums sur lesquels j'ai posté et également des gens à qui j'ai demandé ne savent pas me répondre, et comme j'ai vu que sur le clan il y a des codeurs je me suis dit pourquoi pas !
Si personne ne sait me répondre pourriez vous me renvoyer vers des forums plus expert. Bon alors voilà le problème pou m’entraîner au langage C j'ai décidé il n'y a pas longtemps de coder un programme de calcul de racine carré par dichotomie, vous allez me dire " hé mais ça sert à rien tu peux faire sqrt bla bla " Le truc c'est que c'est pour m’entraîner pas pour calculer des racines carrées, Le programme fonctionne a deux détail près: 1. La racine carré de 36 est 5.997799 donc il tombe presque juste mais pas totalement 2. Quand on demande une précision trop élevé le programme s'arrète Voila le code Citation :
je n'ai pas pris la peine de le commenter car je le trouve relativement simple, cependant si vous voulez des commentaires dites-le. Merci d'avance. ![]() edit; : je ne suis pas sur d'avoir accès à Internet les jours qui vont suivre donc ne vous étonné pas si je ne répond pas .
Contribution le : 08/08/2012 16:59
|
|
|
_________________
"Le jour où Microsoft inventera un truc qui ne plante pas ce sera un clou" ![]() Mon site Internet: Soyez Indulgent je débute en HTML/CSS. |
||
|
||
|
|
Re: Probleme sur un programme en C ( Calcul de racine carré ) |
|
|---|---|---|
|
Touriste
Inscrit:
08/08/2012 18:26 Post(s): 1
|
Bonjour Aspirine62400.
Je plussoie DaWaaaaghBabal le calcul de dichotomique ne peut pas tomber juste. Tu ne peux pas vraiment régler ton problème 1/ la seule chose que tu peux faire c'est vérifier si, par un coup de bol extraordinaire tu ne tomerait pas pile sur le bon nombre en rajoutant dans ton while quelque chose comme Citation :
mais ça ne règle pas beaucoup de cas... Pour 2/ après quelque tests je pense avoir compris le problème.Mon hypothèse est qu'il provient de la précision du format float en C. Quand tu demandes une trop grande précision ta variable eps vaut en fait 0 et ta boucle while devient infinie donc le programme s'arrête. Solutions : Tu peux partiellement régler ce problème en définissant tes variables en tant que long double ,qui est un type plus précis que float. Cependant, si tu demande une précision encore plus grande, tu auras le même problème. En bref tu peux atténuer le problème mais pas le résoudre complètement à moins, peut être, d'utiliser une bibliothèque spécialisée dans le calcul en précision arbitraire de ce style (à vérifier je n'ai pas testé). Mais ça parait excessif vu la simplicité de ton programme. Enfin si tu veux t'amuser tu peux essayer de coder la même chose avec d'autre algorithmes.Il me semble que la Méthode de Newton est bien plus rapide que la méthode dichotomique pour ce genre de calculs. Voilà j'espère t'avoir un peu aidé (et ne pas avoir dis trop de bêtises)
Contribution le : 08/08/2012 19:30
|
|
|
||
|
|
Re: Probleme sur un programme en C ( Calcul de racine carré ) |
|
|---|---|---|
|
OverdOzed
![]()
Inscrit:
01/01/2012 00:13 Post(s): 305
|
Tout d'abord je vous remercie tous les deux pour vos réponses qui me sont très utiles, @ DaWaaaaghBabal et Vaydre, c'est bien ce que je craignais en effet, impossible de tomber juste avec le calcul par dichotomie, merci de me le confirmer, @ DaWaaaaghBabal, c'est vrai que j'aurai pu simplifier le code de cette façon, merci de me le faire remarquer, @ Vaydre, oui apparemment c'est ce qui se passe la boucle devient infinie, d'ailleurs sa en a tous les symptômes ! J'aurai du penser à utiliser un double mais comme tu le dis toi même ce n'est que repousser le problème, pour la bibliothèque ça devient un peu compliqué compte tenu de mon niveau mais c'est vrai que c'est intéressant, j'y reviendrai, quant à la méthode de Newton je ne la connaissait pas et merci de m'en avoir parlé, je vais m'y intéresser.
Encore merci à tous les deux quant a Vaydre je vois que c'est ton premier post donc bienvenue sur le ![]() @+
Contribution le : 09/08/2012 15:58
|
|
|
_________________
"Le jour où Microsoft inventera un truc qui ne plante pas ce sera un clou" ![]() Mon site Internet: Soyez Indulgent je débute en HTML/CSS. |
||
|
||
|
|
Re: Probleme sur un programme en C ( Calcul de racine carré ) |
|
|---|---|---|
|
OverdOzed
![]()
Inscrit:
01/01/2012 00:13 Post(s): 305
|
Ce que tu dit Bibi09 est également intéressant, je ne connaissais pas le principe du garde-fou et c'est intéressant, je vais également mettre un test sur la valeur en entrée, bonne idée.
Encore Merci de votre aide.
Contribution le : 10/08/2012 12:40
|
|
|
_________________
"Le jour où Microsoft inventera un truc qui ne plante pas ce sera un clou" ![]() Mon site Internet: Soyez Indulgent je débute en HTML/CSS. |
||
|
||









|C'est en forgeant qu'on devient forgeron, c'est en mouchant qu'on devient moucheron et c'est en sciant que Léonard devint scie.



Mai 24
Mai 31

