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

  FORUM HardWare.fr
  Programmation
  C

  probleme grammaire linéaire en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme grammaire linéaire en C

n°1823263
licho
PSN_ID : FRlicho
Posté le 07-12-2008 à 18:14:54  profilanswer
 

slt
je me retrouve confronté à un petit problème de compréhension sut un TP de grammaire linéaire à faire
le but de ce TP et de faire un programme qui reconnaît un langage de type  a.b*  .a² + b.....b.a  (* désigne ici 0 b à l'infini de b soit 1.......b)
je l'est simplifié en ca : (a^3 + a^3 . b.....b) + b.....b.a
 
soit  
M => N + O
O => P.A
P => R + B
R => B.P
 
N => V + T
V => A.A.A
T => V.P
 
mon problème est lors de la récursivité ( P et R) ci dessous le code de P et R

Code :
  1. int bP(int eR, int *peS)
  2. {
  3.     //P => R + B
  4.     int  bPSucces;
  5.     bPSucces = (bR(eR,peS)) || (bB(eR,peS));
  6.      if(bPSucces)
  7. {
  8.  *peS = eR + 1;
  9.  printf("la condition P est vraie\n" );
  10.  return 1;
  11. }
  12. else{
  13.     *peS = eR ;
  14.     printf("la condition P est fausse\n" );
  15.  return 0;}
  16. }
  17. int bR(int eS, int *peT)
  18. {
  19.     //R => B . P
  20.     int  bRSucces,eJ;
  21.     bRSucces = (bB(eS,&eJ)) && (bP(eJ,peT));
  22.      if(bRSucces)
  23. {
  24.  *peT = eS +1;
  25.  printf("la condition R est vraie\n" );
  26.  return 1;
  27. }
  28. else{
  29.     *peT = eS ;
  30.     printf("la condition R est fausse\n" );
  31.  return 0;}
  32. }


les fonction bB et bA sont de type A=>a et B=>b
j'arrive enfin au problème si je lui demande de reconnaître la règle bbba il ne me la reconnaît pas. il reconnaît bien les 3b mais en moment de faire le test du A (dans le O voir code ci dessous) il effectue la recherche du A à partir du deuxième caractère (soit le 2nd b) et non à partir du A, la regle O et donc fausse alors quelle devrait etre vrai
 

Code :
  1. int bO (int eP, int *peQ)
  2. {
  3. // O => P.A
  4. int bOSucces,peO;
  5. bOSucces =( (bP(eP,&peO)) && (bA(peO,peQ)) );
  6.     if(bOSucces)
  7. {
  8.  *peQ = eP +1;
  9.  printf("la condition O est vraie\n" );
  10.  return 1;
  11. }
  12. else{
  13.          *peQ = eP;
  14.          printf("la condition O est fausse\n" );
  15.  return 0;}


 
 
merci d'avance (dsl je suis vraiment pas au point en récursivité)

mood
Publicité
Posté le 07-12-2008 à 18:14:54  profilanswer
 


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

  probleme grammaire linéaire en C

 

Sujets relatifs
[C] nombres binairesProbleme avec pages html et lien sous IE 7
Problème de réels en CProblème affichage applications java
[Résolu] Problème avec propriété floatProblème de tableau
Flash CS3 et CS4 dans application C++Problème code javascript
[JScrollPane] problème d'impression 
Plus de sujets relatifs à : probleme grammaire linéaire en C


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