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
|
char* automate[Dimension][Dimension];
char * expr;
automate[0][1]="a\0";
automate[0][2]="b\0";
automate[1][1]="b\0";
automate[1][2]="a\0";
automate[2][0]="b\0";
// appel de la premiere fonction
//char * afer(char * automate[Dimension][Dimension]){
expr = afer(automate);
// Dans cette meme fonction j'appel x fois la fonction pour chaque noeud
//char * supprNoeud(int noeud, char * automate[Dimension][Dimension]){
tmp = supprNoeud(0, automate);
...
// dans suppr noeud il y a le code en haut
...
for(n=0;n<nbPred;n++)
for(p=0;p<nbSucc;p++){
char tmp[4096]="";
strcat(tmp ,accoD);
// Creation de la grammaire pour le chemin pred[n] -> succ[n]
strcat(tmp ,automate[pred[n]][noeud]);
if(automate[noeud][noeud]!=" "){
strcat(tmp ,automate[noeud][noeud]);
strcat(tmp ,"*\0");
}
strcat(tmp ,automate[noeud][succ[p]]);
strcat(tmp ,accoF);
// Si chemin directe entre pred[n] -> succ[n] on l'ajoute avec un |
if(automate[pred[n]][succ[p]]!=" "){
strcat(tmp ,"|\0");
strcat(tmp ,accoD);
strcat(tmp ,automate[pred[n]][succ[p]]);
strcat(tmp ,accoF);
}
automate[pred[n]][succ[p]]=tmp;
strcat(expr ,tmp);
}
// On supprime les anciens cehmins
for(n=0;n<nbPred;n++){
for(p=0;p<nbSucc;p++){
automate[pred[n]][noeud]=" ";
automate[noeud][succ[p]]=" ";
}
}
for(n=0;n<Dimension;n++)
for(p=0;p<Dimension;p++)
if(automate[n][p]!=" ")
printf("%d ---- %s ---- %d\n",n,automate[n][p],p);
chaine = NULL;
chaine = (char*) malloc(strlen(expr)*sizeof(char));
chaine = expr;
return chaine; |
Partager