Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2991 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide pour creer un programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide pour creer un programme

n°2212088
noobofc++
Posté le 28-11-2013 à 23:11:26  profilanswer
 

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
mood
Publicité
Posté le 28-11-2013 à 23:11:26  profilanswer
 

n°2212212
dreameddea​th
Posté le 29-11-2013 à 17:32:06  profilanswer
 

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

n°2212297
noobofc++
Posté le 01-12-2013 à 15:06:15  profilanswer
 

cout << "bonjour";


Message édité par noobofc++ le 03-12-2013 à 13:14:22
n°2212327
dreameddea​th
Posté le 01-12-2013 à 21:55:29  profilanswer
 

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 :
  1. souschaine == "exp" || "ln" /// faux !!!!
  2. (souschaine == "exp" ) || (souschaine == "ln" ) ///ok


 
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...


Message édité par dreameddeath le 01-12-2013 à 21:59:08
n°2212328
dreameddea​th
Posté le 01-12-2013 à 22:19:52  profilanswer
 

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 :
  1. Token* getNextToken(){
  2.      string nextWord;
  3.      Token* nextToken=new Token();
  4.      cin >> nextWord;
  5.      if(nextWord == "fct1" ){
  6.            nextToken->setType(FCT1);
  7.            nextToken->setRawValue(nextWord);
  8.      }
  9.      else if( .... ){
  10.            ...
  11.      }
  12.      ...
  13.      else{
  14.           delete nextToken; //Liberation memoire
  15.            throw [Parse Error]; // Cas d'erreur (exemple mot inconnu)
  16.      }
  17.      return nextToken;
  18. }
  19. Arbre* Parse(){
  20.     Arbre *parsedArbre= new Arbre();
  21.     Token *nextToken = getNextToken();
  22.     switch(nextToken->getType()){
  23.         case FCT1:
  24.              fctArbre->setFct(FCT1);
  25.              fctArbre->addParam(Parse()); // appel recursif pour lire le 1ère paramètre de la fonction
  26.              ...   //
  27.              break;
  28.         case ...:
  29.               ....
  30.               break;
  31.         ...
  32.         default:
  33.               delete parsedArbre; //liberation mémoire avant exception
  34.               delete nextToken;
  35.               throw [unexpected Token]; 
  36.     }
  37.     return parsedArbre;
  38. }


 
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


Message édité par dreameddeath le 01-12-2013 à 22:24:33
n°2212334
noobofc++
Posté le 01-12-2013 à 23:50:54  profilanswer
 

On a pas fait les parseurs dans le cours, on a juste fait les structures et les listes même pas les classes

n°2212336
noobofc++
Posté le 02-12-2013 à 00:19:38  profilanswer
 

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 ?

n°2212344
dreameddea​th
Posté le 02-12-2013 à 09:47:43  profilanswer
 

donc tu as fait du C et non du C++...
 
Pour le coup de souschaine, le truc qui pose pb c'est  

Code :
  1. ...
  2.          cin >> Arbre->souschaine;
  3.         if([b]souschaine[b] != 'F')
  4. ...


 
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

n°2212374
noobofc++
Posté le 02-12-2013 à 13:01:35  profilanswer
 

Connaissez vous un bon livre (le meilleur) pour apprendre le C++ (tout en étant un débutant en programmation) ?

n°2212533
Thutur
Why so serious ? Higniiiihaha
Posté le 03-12-2013 à 23:46:07  profilanswer
 

Vu ton cas, je dirais le site du zero.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide pour creer un programme

 

Sujets relatifs
BESOIN D'AIDE SVP !!Stopper le programme
[JAVA] aide compilation d'un programmecréer un logiciel d'avatar
Aide tri par selection java's coolAide programmation ! !
Besoin d'aide sur une page de contact en phpBesoin d'aide pour créer un programme
Plus de sujets relatifs à : Besoin d'aide pour creer un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR