|
Bas de page | |
---|---|
Auteur | Sujet : Implémentation d'un programme de logique mathématique en C |
Publicité | Posté le 07-02-2007 à 15:34:43 |
bad___day | up |
-ThX- Not here anymore | faut voir avec les cracks de la programmation fonctionnelle
|
Trap D | Plutôt que de donner tout de suite du code C, il pourrait être intéressant de nous expliquer déjà ton principe de lecture/analyse des clauses et comment tu penses les représenter en mémoire.
|
thermocline Geek intelligent | Le langage C est une obligation pour toi dans ce cas? --------------- Les bureaucrates: "S'ils tombaient d'un immeuble, il leur faudrait une semaine pour s'ecraser." "All I ever wanted All I ever needed Is here in my arms Words are very unnecessary They can only do harm Enjoy the silence" |
0x90 → | le langage C n'est effectivement pas la panacée pour faire ce genre de choses, mais sinon si c'est obligatoire il va falloir déja voir à représenter tes expressions d'une manière traitable, par exemple en utilisant un truc du genre (je sens que ce bout de code va provoquer les fureurs de certains ) :
Tu fais quelques fonctions pour créer des struct expression pour commencer, histoire de pas te palucher des mallocs à travers tout ton code,
Tu définis sur la struct expression_set (un expression_set c'est un ensemble d'expression, cad un sigma) les opérations habituelles de liste chainée (add, prev, next) et une fonction duplicate (tu va en avoir besoin pour crée tes plusieurs sigma quand ça "bifurque"...) et ensuite il te faudra aussi une liste chainée d'expression_set pour stocker tout tes sigma et les parcourir (enfin tu peut utiliser ce que tu veut comme conteneur, et si t'es flemmard ou que t'en a une de déja faite, tu utilise une liste chainée générique à base de void*... ) ensuite tu fais des fonction genre expression_set_is_consistant() pour faire tes test à la fin et une fonction expression_set_is_simple() pour savoir si une expression est "minimale" au sens de la forme A ou !A. il te faut des fonctions de transformation d'arbre (les struct expression forment un arbre ...) qui utilisent tes 4 règles de transformation pour remplacer un expression_set par d'autres expression_set "simplifiés", çe sera le coeur de ton algo et pas forcément le plus facile... tant que expression_set_is_simple() renvoie vrai, tu ré-applique (en gros hein). quand toutes les expression_set sont simples, tu regarde si toutes tes expression_set sont consistantes avec la fonction idoine, selon le résultat tu as ta réponse, TADAM \o/ Bon le bonus c'est par contre qu'on début il te faudra peut-être transformer une expressions sous la forme humaine en chaîne de caractère en une structure d'arbre, fait ton flemmard, utilise le bulldozer, flex/bison (facile si tu maitrise les regexp cela dit) Message édité par 0x90 le 11-02-2007 à 10:23:24 --------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
el muchacho Comfortably Numb | L'interet d'ecrire ce genre de truc en C m'echappe... Message édité par el muchacho le 11-02-2007 à 11:05:00 |
Joel F Real men use unique_ptr | Tu connais COQ ?
|
bad___day |
Message édité par bad___day le 12-02-2007 à 15:30:17 |
Trap D | Si tu n'est pas obligé d'utiliser le C, alors j'ai vu un prouveur en Prolog qui fait ça en 40 lignes de code. |
Publicité | Posté le 11-02-2007 à 21:11:36 |
Joel F Real men use unique_ptr | Prolog, COQ, ISAR ... |
Trap D | Je ne peux que te conseiller de regarder du côté de Prolog, en tant que programmeur, ça ouvre l'esprit. |
bad___day |
|
el muchacho Comfortably Numb | Si tu es tjrs sur cet exercice, tu fais comme tu veux, mais on ne pourra pas t'aider, l'algo est trop complexe pour être codé en C simplement, ça prendrait plus de temps que la plupart d'entre nous sont prêts à y consacrer. Tu ferais mieux d'apprendre ocaml et de reprendre le code de ton copain (qui a l'air de bien torcher, au passage) et de te faire aider par lui. Message cité 1 fois Message édité par el muchacho le 15-02-2007 à 20:26:42 |
0x90 → |
Euh, j'ai dja donné une bonne partie quand même... Message cité 1 fois Message édité par 0x90 le 15-02-2007 à 22:17:59 --------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
bad___day |
Sujets relatifs | |
---|---|
Question sur mon programme Calculatrice... | programme c++ |
[résolu]Shell linux dans un programme Java | Pause du programme en attendant un évènement |
Programme calculant la difference entre 2 dates | petit programme pour TPE |
Libérer la mémoire et fonction recvfrom | [C] Des accolades "just pour le fun" ? |
[résolu]problème avec un ptit programme bootable. | [Résolu][C] Exécuter un programme dans un autre programme. |
Plus de sujets relatifs à : Implémentation d'un programme de logique mathématique en C |