1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| /****************************************************************/
// application regle 5
void regle5(mat_dyn *t,Tnom tvar,TABL *tabL,int *ligne,int colonne, PNOEUD ancetre)
{
int i=0,j=0,trouve=0,ligne2;
PNOEUD nveau1,nveau2;
char lettre,signe;
TABL *tabL2;
mat_dyn t2;
ligne2=(*ligne);
tabL2=(TABL *)malloc(ligne2*sizeof(TABL));
ini_matrice(&t2,*ligne,colonne);
memcpy(&t2,t,ligne2*colonne*sizeof(composante)); //on fait une copie de la matrice t
memcpy(tabL2,tabL,ligne2*sizeof(TABL));
while(j<colonne && trouve==0)
{
while(i<(*ligne) && (*t)[adr_mrd(i,j,colonne)] ==0 )
i++;
if(i==(*ligne))
{
i=0;
j++;
}
else
trouve=1; //sert a sortir de la boucle
}
if(trouve)
{
// gestion de a
trouve=enl_a(t,1,j,tabL,ligne,colonne);
caractere(trouve,tvar[j],&lettre,&signe);
nveau1= ajout_arbre(*t,*ligne,lettre,signe, NULL, NULL);
ancetre->fils=nveau1;
gestion_regles(ancetre->fils,colonne,tvar,tabL); //ERREUR: previous implicit declaration of 'gestion_regles' was here
// gestion de -a
trouve=enl_a(&t2,-1,j,tabL2,&ligne2,colonne);
caractere(trouve,tvar[j],&lettre,&signe);
nveau2= ajout_arbre(t2,ligne2,lettre,signe, NULL, NULL);
ancetre->frere=nveau2;
gestion_regles(ancetre->frere,colonne,tvar,tabL2);
}
}
/****************************************************************/
//gestion des regles
void gestion_regles(PNOEUD ancetre, int colonne, Tnom tvar, TABL *tabL)
{ //ERREUR : conflicting types for 'gestion_regles'
int ligne;
mat_dyn Mmatrice,Mancetre;
if( ancetre->arc!='\0' && ancetre->arc!='-')
{
Mancetre=ancetre->matrice;
ligne=ancetre->ligne;
ini_matrice(&Mmatrice,ligne,colonne);
// copie du contenu de la matrice tampon dans la matrice t
if(memcpy(Mmatrice,Mancetre,ligne*colonne*sizeof(composante))==NULL)
printf("pointeur null");
cpt_ligne(&Mmatrice,tabL, ligne, colonne);
if(regle3(&Mmatrice,tvar,tabL,&ligne,colonne,ancetre))
gestion_regles(ancetre->fils,colonne,tvar,tabL);
else if(regle4(&Mmatrice,tvar,tabL,&ligne,colonne,ancetre))
gestion_regles(ancetre->fils,colonne,tvar,tabL);
else
regle5(&Mmatrice,tvar,tabL,&ligne,colonne,ancetre);
}
} |
Partager