Résoudre une équation variable définie par l’utilisateur

Des réponses en C, Python, C ++ ou Javascript seraient très appréciées. J’ai lu quelques livres, fait tous les exemples. Maintenant, j’aimerais écrire un programme simple. Mais, j’ai déjà rencontré le barrage routier suivant:

Mon intention est de prendre une équation de l’utilisateur et de l’enregistrer dans une variable, par exemple:

-3*X+4 or pow(2,(sin(cos(x))/5)) > [In valid C Math syntax] 

Et calculez ensuite l’expression donnée pour une certaine valeur X. Quelque chose comme ça:

 printf("%g", UserFunction(3.2)) // Input 3.2 for X in User's Function and Print Result 

Des idées? Pour ma vie, je ne peux pas comprendre cela. Ajoutant à ma frustration, la solution est probablement très simple. Merci d’avance.

Il n’y a pas de moyen simple de faire cela en C mais je pense que muParser peut vous être utile, il est écrit en C ++ mais a une liaison en C. ExprTk est également une option, mais il semble qu’il s’agisse uniquement de C ++ , mais il est beaucoup plus facile d’obtenir des résultats intéressants.

Une autre option peut être l’ évaluation d’expression qui fait partie de Libav . Il est en C et l’en – tête eval.h contient de bonnes descriptions de l’interface.

Dans des langages compilés comme C, C ++ ou Java, il n’existe pas de moyen simple. Vous devez en principe réécrire tout un compilateur (ou utiliser une bibliothèque externe avec un interpréteur). Ce n’est que sortingvial dans les langages de “script” comme Python et Javascript, qui ont une fonction (souvent appelée “eval ()”) qui évalue les expressions au moment de l’exécution. Cette fonction est souvent dangereuse car elle peut également faire des choses comme appeler des fonctions avec des effets secondaires.

Ffmpeg / libav a un évaluateur de fonctions simple et agréable que vous pouvez utiliser.