Bonjour,
j'aimerais savoir s'il est possible d'utiliser les fonctions dans une saisies. par exemple, avec la librairie math.h, si on rentre pow(3,3)+sqrt(9) avec scanf, cela affiche le resultat 30.
merci d'avance
Version imprimable
Bonjour,
j'aimerais savoir s'il est possible d'utiliser les fonctions dans une saisies. par exemple, avec la librairie math.h, si on rentre pow(3,3)+sqrt(9) avec scanf, cela affiche le resultat 30.
merci d'avance
Bonsoir,
non : si tu veux interpréter la saisie il va falloir coder ça. Il y a de nombreux sources dispo sur le net pour ce genre de problème.
kwariz a raison, C++ est un langage compilé et la réflexion c'est pas aussi simple qu'en Java.
Ceci dit, tu peux utiliser un interpréteur de calculs en C++ plutôt que le coder toi même. Celui-ci par exemple.
Pour information…
En java, il y a une classe nommé Class, dont une instance est créée pour chaque classe utilisée dans un code.
Par exemple, le code New LinkedList().getClass().getName() affiche "java.util.LinkedList".
Cette classe permet aussi d'appeler les méthodes, d'accéder aux champs, en utilisant une chaine de caractères contenant leurs noms.
C'est aussi un super moyen d'avoir du code qui plante sans comprendre pourquoi.
Oops, désolé... Me suis planté là, j'suis pô sur le forum C++.
1000 excuses mes seigneurs ;)
Melem, merci de relever ma bourde... J'avais vraiment pas vu :ccool:
Parce qu'en Java les mécanismes de réflexion et d'introspection sont plus puissant qu'en C++.Code:Et pourquoi ce serait plus simple de le faire en Java ?
Tu peux parser du code Java (des expression mathématiques p.e.) et chercher à l'interpréter en faisant de l'introspection pour trouver les classes et fonctions à appeler. En C/C++, à ma connaissance, ce n'est pas possible. Tu dois faire un interpréteur de commandes qui connait d'une façon ou d'une autre toutes les fonctions à appeler (p.e. avec une LUT qui met en relation des chaines de caractères et les fonction qui y sont associés.).
La réflexion n'est tout simplement pas possible en C++. Pas en standard en tout cas. On ne peut donc pas comparer les deux langages sur ce point :).Citation:
Parce qu'en Java les mécanismes de réflexion et d'introspection sont plus puissant qu'en C++.
En C++, on devra en effet utiliser une map<string, adresse_fonction>. La même chose en C. Certes, il faut manuellement initialiser la map, ce qui résulte en du code "plus compliqué", mais ce n'est pas la mer à boire non plus. Par ailleurs, parser une expression mathématique ne se résume pas à transcrire une chaîne en adresse de fonction. Quel que soit le langage utilisé, C++ ou Java, il faudra écrire un véritable interpréteur.Citation:
Tu dois faire un interpréteur de commandes qui connait d'une façon ou d'une autre toutes les fonctions à appeler (p.e. avec une LUT qui met en relation des chaines de caractères et les fonction qui y sont associés.).