0
votes

Modèles C ++ pour représenter des polynômes

J'essaie d'utiliser des modèles pour représenter des polynômes simples comme x ^ 2 + 3x + 5. Mon idée est de les représenter comme une somme de termes avec chaque terme ayant un coefficient et une puissance de sorte que terme. x ^ 2 a coeffe = 1 et puissance = 2. Je veux aussi pouvoir évaluer les polynômes de certains x (ils n'ont que 1 inconnu mais dans de nombreux endroits). Jusqu'à présent, j'ai: xxx

Cependant, je suis coincé. Est ce que j'essaye encore possible? Si oui, comment puis-je faire les appels Eval () récursif () fonctionner?


0 commentaires

3 Réponses :


2
votes

Oui, vous pouvez le faire, il vous suffit d'appeler eval sur la queue et que toutes les classes sont moins d'état, vous pouvez simplement créer une instance pour appeler la fonction membre sur, sur L'endroit: xxx

ou si vous faites eval statique , vous pouvez appeler queue :: eval (x) < / code> directement.


3 commentaires

Merci! Une autre chose - comment pourrais-je représenter (x-2) ^ 2? Des idées?


@Parankush Je ne suis pas sûr de savoir pourquoi vous faites cela en premier lieu. Quelque chose comme celui-ci n'est généralement utile que si vous avez l'intention de faire des transformations sur le polynôme à la compilée, par exemple. Pour Modèles d'expression . Comment cela serait logique de représenter, analyser et faire des transformations sur les polynômes, puis de votre cas d'utilisation spécifique.


@Parankush: Ce n'est pas un polynôme, vous avez donc besoin de quelque chose de tout à fait différent et Way plus compliqué.



1
votes

coefficients polynomiaux peut être stocké dans std :: array ou std :: vecteur (au cas où vous définissez le degré polynomial en runtime).

Emportez ensuite la fonctionnalité avec eval fonction. xxx

utilisation xxx


0 commentaires

1
votes

Je suppose que vous expérimentez avec métaprogramming . Votre question m'a également fait excité, parce que je suis également débutant dans MetaProgramming et je tiens à pratiquer. La réponse de Walnut déjà acceptée mais il n'y a pas de mal à partager une autre mise en œuvre. J'ai utilisé des techniques de base de métaprogrammation de base.

J'espère que cela vous aidera. xxx

Exécuter en ligne


0 commentaires