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
| typedef struct data {
bool* res;
const Automate* aut;
}Data;
void transition_automate_aux(int origine, char lettre, int fin, void* data) {
Data* d = (Data*) data;
print_automate(d->aut); /* CRASH */
bool* test = d->res;
/* A chaque transition de mon automate je fait un && avec le résultat global des transitions précédentes */
/* Si jamais une seule transition n'est pas une transition du 2nd automate alors le test final sera false */
/* J'ai fait cette ligne vite fait, il doit y avoir des pb de syntaxe p-e mais là n'est pas le pb, le pb est au-dessus */
(*test) = (bool)(test && est_une_transition_de_l_automate(aut, origine, lettre, fin)));
}
bool meme_langage (Automate * aut1, Automate * aut2)
{
Data * data = malloc(sizeof(Data));
data->aut = malloc(sizeof(Automate));
data->res = malloc(sizeof(bool));
/* Comparaison des automates */
data->aut = aut2;
data->res = true;
print_automate(data->aut); /* Affichage de test pour l'automate dans la structure (fonctionne) */
/* Cette fonction marche et prend en paramètre l'automate, une fonction quelconque (de type void) */
/* qui va s'appliquer à toutes les transitions de mon automate, et une structure void * pour passer les paramètres */
/* de la fonction "transition_automate_aux" ou tout autre valeur (compteur, etc...). Ici je m'en sers pour passer */
/* un booléen et l'automate 2 qui me sert pour lors de l'appel de fct "est_une_transition_de_l_automate" */
pour_toute_transition(aut1, transition_automate_aux, &data);
return true; /* Tampon */
} |
Partager