Traitement de l'equation d'une conique avec un grammaire

Description

Un camarade aussi étudiant en informatique m'a contacte .Il voulait un programme qui demande la saisie l’équation d'une conique (Ay^2+Bx^2+2Cxy+Dy+Ex+F=0).Puis le programme réduit l’équation et le trace. Le problème pour lui était dans la saisie. En écrivant une équation du type "x^2+y^2-x+1.2y-7" sans respecter l'ordre de variable. Le programme doit être capable d'extraire le différent coefficient (par mon exemple :A=1,B=1,2C=0,D=1.2,E=-1,F=-7).Je lui est propose d'utiliser la méthode de grammaire et d'automatique. JE pense cette méthode est systématique lorsqu'on traite les problèmes de ce genre.
Voici la grammaire que j'ai utilise:

<equation>:<premierterme>
<premierterme>:<signe><terme><termesuivant>
<premierterme>:<terme><termesuivant>
<termesuivant>:<signe><terme><termesuivant>
<termesuivant>:#
<terme>:<nombre><groupevariable>
<terme>:<variable>
<goupevariable>:<variable>
<groupevariable>:#
<nombre>:<partieentiere><suitenombre>
<nombre>:<partiedecimale>
<suitenombre>:<partiedecimale>
<suitenombre>:#
<partieentiere>:<chiffre><suitechiffre>
<partiedecimale>:'.'<partieentiere>
<suitechiffre>:#
<suitechiffre>:<chiffre><suitechiffre>
<variable>:<lettre><suitevariable>
<suitevariable>:<lettre>
<suitevariable>:'^'<chiffre>
<suitevariable>:#
<lettre>:'a'|....|'z'|'A'|...|'Z'
<chiffre>:'0'|.....|'9'
<signe>:'+'|'-'
# signifie que c'est toujours vrai lorsque les autres conditions ne sont pas rempli.
'0'|....|'9' signifie que si pas 0 c'est 1, sinon le suivant et ainsi de suite jusqu'a 9.
Cette grammaire contient une partie opérative qui récupère les informations nécessaire.
Il y a trop des pointeurs. On a le choix entre les pointeurs et les variables globales. Mais je n’ai pas aimé utiliser des variables globales. Ils rendent le code incompréhensible.
Cette version est implantée en c .Celui qui est intéressé par ce programme dans un autre langage (VB, C/C++, JavaScript, java) peut me signaler par un commentaire ou envoyez moi un email au modesteheritier@gmail.com .
Je vous conseille de continuer et d’aboutir à l’idée de départ ou de s’inspirer de ceci pour faire d’autres choses.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.