Besoin d'aide pour creer un programme - C++ - Programmation
Marsh Posté le 29-11-2013 à 17:32:06
Post un bout de code/d'algorithme qui prouve que tu as "essayé" quelque chose et que tu as un "problème" particulier, et on sera ravi de t'aider à améliorer/régler le pb...
Pour l'instant, ça ressemble plus a un exo donné en TP il y a 2 semaines que tu dois rendre pour demain
Marsh Posté le 01-12-2013 à 15:06:15
cout << "bonjour";
Marsh Posté le 01-12-2013 à 21:55:29
oulà, y a beaucoup de pbs...
ça ne doit pas compiler (souschaine n'est pas déclarée par exemple)...
La récursivité est une bonne idée pour résoudre ton pb, mais elle est mal maitrisée : il faut une condition d'arrêt et surtout les entrées doivent changer entre chaque appel, sinon, c'est la boucle infinie assurée (enfin ça va corer avant avec un stack overflow)... A mon avis, tu oublie de refaire un cin>> [xxx] dans la fonction construire...
Une chaine de caractère c'est "[xxxx]" et non '[xxxx]'...
Pour comparer une chaine avec plusieurs valeurs, il ne faut surtout pas faire
Code :
|
C'est dommage de faire du C++ et de faire un Struct, mais bon faut bien démarrer par qq chose.
cin éclate par caractère espace, donc la virgule est inutile ou doit être supprimée ou ignorée (supprimée) lors du parsing...
Marsh Posté le 01-12-2013 à 22:19:52
Pour faire un parseur, on gère en général 2 étapes :
- le tokenizer : c'est ce qui "lit" la prochaine entrée (ici un "mot" sans espace) et fait une première analyse pour déterminer le "type" de mot (nombre, un des noms de fonction autorisée, etc...). Le tokenizer généralement renvoie deux choses : le type + la valeur convertie
- un parseur : il demande au tokenizer le prochain "token" et décide de la marche à suivre (construire un arbre)
Donc on peut imaginer :
Code :
|
Bien évidemment, il y a plein de trous, j'ai pas compilé et donc y peut être une ou deux accolades en moins, mais c'est plus pour illustrer l'architecture habituelle de parseurs
Marsh Posté le 01-12-2013 à 23:50:54
On a pas fait les parseurs dans le cours, on a juste fait les structures et les listes même pas les classes
Marsh Posté le 02-12-2013 à 00:19:38
souschaine n'est pas déclaré dans "struct" ?
j'ai beaucoup de mal avec la création de l'arbre et la récursivité.
j'ai pas trop compris le probléme avec le cin ?
Marsh Posté le 02-12-2013 à 09:47:43
donc tu as fait du C et non du C++...
Pour le coup de souschaine, le truc qui pose pb c'est
Code :
|
Arbre est un type et non une variable, le deuxième "souschaine" n'est pas déclaré...
Bref, tu veux faire trop compliqué, trop vite... Écris moins de code et compile/teste au fur et à mesure...
Le "cin >>" renvoie le prochain mot (s'arrête au premier "blanc" ), la virgule est donc "incluse" si elle existe et donc la string ne contient pas toute la chaine jusqu'au retour chariot.
La récursivité est LE concept fondamental en algorithmie (qu'on le fasse à la "main" via une pile - stack - ou via appel récursif d'une fonction). Tu as du voir ça en cours, mais sinon va voir sur google, je suis sûr qu'il existe des tutos "visuels" pour ça (vidéo, flash, ...). La recherche google ça fait partie de l'apprentissage aussi
En informatique/développement, il s'agit surtout d'un art "d'assemblage", d'où mon idée de te soumettre une "architecture" assez proche de ton code mais surtout plus "formalisée". Approprie la toi (quitte à la réécrire à ta sauce)
Cdlt
Marsh Posté le 02-12-2013 à 13:01:35
Connaissez vous un bon livre (le meilleur) pour apprendre le C++ (tout en étant un débutant en programmation) ?
Marsh Posté le 28-11-2013 à 23:11:26
Bonsoir,
Si quelqu'un peut m'aider je le remercie d'avance.
Cordialement LepetitNoob
Message édité par noobofc++ le 03-12-2013 à 13:13:40