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>:<term e><termesuivant>
<termesuivant>:<signe><terme><ter mesuivant>
<termesuivant>:#
<terme>:<nombre><group evariable>
<terme>:<variable>
<goupevariable>:<var iable>
<groupevariable>:#
<nombre>:<partieentiere> <suitenombre>
<nombre>:<partiedecimale>
<suitenomb re>:<partiedecimale>
<suitenombre>:#
<partieentier e>:<chiffre><suitechiffre>
<partiedecimale>:'.'<pa rtieentiere>
<suitechiffre>:#
<suitechiffre>:<chif fre><suitechiffre>
<variable>:<lettre><suitevariab le>
<suitevariable>:<lettre>
<suitevariable>:'^'<c hiffre>
<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.