Cyberboy2054
Messages postés173Date d'inscriptionjeudi 20 décembre 2001StatutMembreDernière intervention22 août 2008
-
17 mai 2005 à 18:47
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008
-
18 oct. 2006 à 19:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 18 oct. 2006 à 19:15
je programme en VB.NET
si tu as des exemples ou des sources hesites pas je peux toujours voir comment on fait... car je vois pas du tout comment on pourais faire !
Saros
Messages postés921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 18 oct. 2006 à 18:37
Ca doit exister, des classes pour manipuler des nombres avec une précision fixée par l'utilisateur... Au pire c'est pas très compliqué à programmer.
Tu devrais en trouver à profusion sur cppfrance
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 16 oct. 2006 à 23:09
c'est possible d'avoir plus de 28 decimales pour enncadrer la racine ? Avec la variable decimal je peux avoir maximum 28 decimales mais je voulais savoir si je pouvais en avoir plus ??
Merci
Saros
Messages postés921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 12 sept. 2006 à 17:47
La fonction doit être monotone au voisinage du zéro considéré, sinon tu prends la dérivée
Dans ton cas, les zéros sont aussi ceux de
2*x
et cos(x)
Par contre à programmer c'est plus chaud..
flodelarab
Messages postés2Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention11 septembre 2006 11 sept. 2006 à 18:00
Bon ben, je suis au regret de dire que ce code ne marche évidemment pas.
2 contres exemples flagrants:
x^2
sin(x)+1
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 20 mai 2005 à 21:19
oh interressant ça ncoder
ncoder
Messages postés244Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 6 avril 20081 20 mai 2005 à 18:10
Pour la fonction :
int fonction(char* fonction,int rang)
{
//calculs
return resultat;
}
J'ai réussi mais j'ai encore qques bugs avec la dichotomie....;)
ncoder
Messages postés244Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 6 avril 20081 19 mai 2005 à 17:53
Ok Ok merci
Saros
Messages postés921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 19 mai 2005 à 14:09
J'ai réadapté mon parser pour DevCPP, et mis à jour le zip
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 18 mai 2005 à 20:09
ah ah, meme pas besoin de se faire chier alors jad ?
jad_raad
Messages postés15Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention 6 juin 2005 18 mai 2005 à 20:03
meme prob pour le parser
merci pour la remarque NCODER
ncoder
Messages postés244Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 6 avril 20081 18 mai 2005 à 18:51
Dev cpp me crée des erreurs bizarres lors de la compilation de ton parser Saros... Non pas que tu aies fait des erreurs mais Dev c++ a des pb...:/
Je vais essayer de "transcrire" pour qu'il comprenne...
ncoder
Messages postés244Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 6 avril 20081 18 mai 2005 à 18:46
jad_raad, ton code est bon, mais il pose qqes pb si l'intervalle est incorrect...( 2 zéros par ex...)
;)
ncoder
Messages postés244Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 6 avril 20081 18 mai 2005 à 18:23
Je regarde...;)
Saros
Messages postés921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 18 mai 2005 à 14:38
J'ai programmé un parser il y a peu, il utilise une conversion en notation suffixée (RPN)... sans vouloir faire de pub...
Il est commenté et tout et tout :
http://www.cppfrance.com/code.aspx?ID=28472
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 18 mai 2005 à 14:10
justement, c'est ce que je dis, mais je parle pas de la source Jad_Raad qui est un modele de présentation, je parle de ncoder (celle a l'origine du post)
Un parser (d'apres ce que je j'ai compris) est une sorte de fonction est capable d'avaler une fonction litterale et d'un ressortir le resultat.
ex:
int fonction(char* fonction,int rang)
{
//calculs
return resultat;
}
voila
@+ et bon codage
Saros
Messages postés921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 18 mai 2005 à 14:01
C'est quoi un parser ?
Il me semble qu'il n'y a pas nécessairement besoin d'un prototype si la fonction est définie avant d'être appellée, quand on lit le code de haut en bas. Il y aurait eu un problème si on l'avait mise après main.
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 18 mai 2005 à 12:49
euh, ta changé la source ou je fumme, la fonction est définie apres la fonction main et en plus sans prototype .... Tu as reussi a compiler ça ?
Peux etre que je suis pas en état today, les cours c'est chiant.
Jarod1980
Messages postés273Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention31 mars 20152 18 mai 2005 à 10:37
Salut,
J'ai moi aussi codé et publié sur ce site une source sur la recherche de zéro par la méthode de dichotomie il y a un bon moment de ça.
http://www.cppfrance.com/code.aspx?ID=27919
Ca peut être aussi t'interesser. Par contre pour le parser j'en ai pas sur vu sur site. Donc si tu décides de le faire ça serais un beau challenge!
jad_raad
Messages postés15Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention 6 juin 2005 17 mai 2005 à 23:15
j'ai lu tous vos commentaires ici mais est ce qu'il y a quelqu'un peut me donner un exmeple du source sur le parser
message pour l'auteur du source en fait ta methode pour la dichotomie et avec la definition des variables est tres compliqué et tu peux la faire autrement j'ai deja codé ce programme avant et je pense que cette methode va t'interesser
//dichotomie
#include<math.h>
#include<stdio.h>
double f(double x)//la fonction f
{
return (exp(2*x)-exp(x)-1);
}
int main()
{
int n;//n = nombre d'iteration
double a,b,c,e;//les points a et b sont l'intervalles à choisir
//e est la precision
printf("Saisir respectivement a,b,e:\n");
printf("a=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("e=");
scanf("%lf",&e);
n=0;
while(fabs(b-a)>e)
{
n++;
c=(a+b)/2;
if(f(a)*f(c)<0)
b=c;
else a=c;
}//end while
printf("\nle resultat est:%lf\niteration:%d\n",c,n);
system("pause");
}
Cyberboy2054
Messages postés173Date d'inscriptionjeudi 20 décembre 2001StatutMembreDernière intervention22 août 2008 17 mai 2005 à 20:41
Oui c'est parfaitement compréhensible, je ne savais pas que c'est possible. Par contre je maintiens que ce serait encore mieux avec un parser d'expression mathématiques ;)
ncoder
Messages postés244Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 6 avril 20081 17 mai 2005 à 19:49
Si ya 2 zéros dans l'intervalle donné ça renvoie "Intervalle incorrect" ...
ncoder
Messages postés244Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 6 avril 20081 17 mai 2005 à 19:36
Je peux déclarer une fonction à l'intérieur d'une autre mais alors je peux utiliser la fonction déclarée que par la fonction dans laquelle elle a été déclarée...
Euh, c'est compréhensible ce que j'ai mis ? :/
Cyberboy2054
Messages postés173Date d'inscriptionjeudi 20 décembre 2001StatutMembreDernière intervention22 août 2008 17 mai 2005 à 18:47
Plus qu'à coder le parser d'expression qui va avec pour plus avoir a coder les fonctions en dur, et ce serait excellent :)
Un petit probleme par contre, mais qui vient de l'algo lui même: et si la fonction a plusieurs zéros dans l'intervalle donné :p ?
Sinon, je comprends pas comment le compilo accepte de compiler le code avec une declaration de fonction à l'intérieur d'une autre fonction (cf dichotomie dans main)
Voilou
18 oct. 2006 à 19:15
si tu as des exemples ou des sources hesites pas je peux toujours voir comment on fait... car je vois pas du tout comment on pourais faire !
18 oct. 2006 à 18:37
Tu devrais en trouver à profusion sur cppfrance
16 oct. 2006 à 23:09
Merci
12 sept. 2006 à 17:47
Dans ton cas, les zéros sont aussi ceux de
2*x
et cos(x)
Par contre à programmer c'est plus chaud..
11 sept. 2006 à 18:00
2 contres exemples flagrants:
x^2
sin(x)+1
20 mai 2005 à 21:19
20 mai 2005 à 18:10
int fonction(char* fonction,int rang)
{
//calculs
return resultat;
}
J'ai réussi mais j'ai encore qques bugs avec la dichotomie....;)
19 mai 2005 à 17:53
19 mai 2005 à 14:09
18 mai 2005 à 20:09
18 mai 2005 à 20:03
merci pour la remarque NCODER
18 mai 2005 à 18:51
Je vais essayer de "transcrire" pour qu'il comprenne...
18 mai 2005 à 18:46
;)
18 mai 2005 à 18:23
18 mai 2005 à 14:38
Il est commenté et tout et tout :
http://www.cppfrance.com/code.aspx?ID=28472
18 mai 2005 à 14:10
Un parser (d'apres ce que je j'ai compris) est une sorte de fonction est capable d'avaler une fonction litterale et d'un ressortir le resultat.
ex:
int fonction(char* fonction,int rang)
{
//calculs
return resultat;
}
voila
@+ et bon codage
18 mai 2005 à 14:01
Il me semble qu'il n'y a pas nécessairement besoin d'un prototype si la fonction est définie avant d'être appellée, quand on lit le code de haut en bas. Il y aurait eu un problème si on l'avait mise après main.
18 mai 2005 à 12:49
Peux etre que je suis pas en état today, les cours c'est chiant.
18 mai 2005 à 10:37
J'ai moi aussi codé et publié sur ce site une source sur la recherche de zéro par la méthode de dichotomie il y a un bon moment de ça.
http://www.cppfrance.com/code.aspx?ID=27919
Ca peut être aussi t'interesser. Par contre pour le parser j'en ai pas sur vu sur site. Donc si tu décides de le faire ça serais un beau challenge!
17 mai 2005 à 23:15
message pour l'auteur du source en fait ta methode pour la dichotomie et avec la definition des variables est tres compliqué et tu peux la faire autrement j'ai deja codé ce programme avant et je pense que cette methode va t'interesser
//dichotomie
#include<math.h>
#include<stdio.h>
double f(double x)//la fonction f
{
return (exp(2*x)-exp(x)-1);
}
int main()
{
int n;//n = nombre d'iteration
double a,b,c,e;//les points a et b sont l'intervalles à choisir
//e est la precision
printf("Saisir respectivement a,b,e:\n");
printf("a=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("e=");
scanf("%lf",&e);
n=0;
while(fabs(b-a)>e)
{
n++;
c=(a+b)/2;
if(f(a)*f(c)<0)
b=c;
else a=c;
}//end while
printf("\nle resultat est:%lf\niteration:%d\n",c,n);
system("pause");
}
17 mai 2005 à 20:41
17 mai 2005 à 19:49
17 mai 2005 à 19:36
Euh, c'est compréhensible ce que j'ai mis ? :/
17 mai 2005 à 18:47
Un petit probleme par contre, mais qui vient de l'algo lui même: et si la fonction a plusieurs zéros dans l'intervalle donné :p ?
Sinon, je comprends pas comment le compilo accepte de compiler le code avec une declaration de fonction à l'intérieur d'une autre fonction (cf dichotomie dans main)
Voilou