Implementation automate DFA bloqué

Signaler
Messages postés
1
Date d'inscription
vendredi 23 décembre 2011
Statut
Membre
Dernière intervention
27 décembre 2011
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
bonjour mes chers :D je suis bloqué a l'implementation d'un automate finis DFA quelconque
en faite j'ai fait presque tout mais dans le main de la class eclipse m'affiche un erreur et j'ai rien pigé de quoi il s'agit
voila le code :D
mercii :D
package smi.compilation.groupe1;

public class automate {

/**
* @param args
*/
// on cherche sur un mot c-à-d String
// classs liste pour
class Liste {
int val;
Liste suivant;
Liste(int v, Liste x) {
val = v;
suivant = x;
}
}
class Automate {
int q0; // état initial
Liste[][] delta; // (table)fonction de transition
Liste finaux; // états finaux (liste d'entier)
Automate(int q, Liste f, Liste[][]d) {
q0 = q;//
delta = d; //
finaux = f;//
}
}


public static int longueur(Liste x) { // La longueur d'une liste
if (x == null)
return 0;
else
return 1 + longueur(x.suivant);
}
public static int kieme(Liste x, int k) { // Le k ème élément
if (k == 1)
return x.val;
else
return kieme(x.suivant, k-1);
}
public static boolean estDans(Liste x, int v) { // Le test d'appartenance
if (x == null)
return false;
else
return (x.val == v || estDans(x.suivant, v));
}


public static boolean accepter(String mot, Automate a) {
return accepter(mot, a, 0, a.q0);
}
public static boolean accepter(String mot, Automate a, int i, int q) {
if (i == mot.length())
return estDans(a.finaux, q);
else {
boolean resultat = false;
int c = mot.charAt(i); // le code ASCII du caractère courant
for (Liste nv_q = a.delta[q][c]; nv_q != null; nv_q = nv_q.suivant)
resultat = resultat || accepter(mot, a, i+1, nv_q.val);
return resultat;
}
}
public static void main(String[] arg) {
// TODO Auto-generated method stub
Liste[][] delta = new Liste[3][128];


delta[0][(int)'0'] = new Liste(0, new Liste(1, null));/******************************erreur ici(no enclosing instance in type automate is accesible.must qualify the allocation with an enclosing instance of type automat************************************************/


delta[0][(int)'1'] = new Liste(0, null);
delta[1][(int)'0'] = null;
delta[1][(int)'1'] = new Liste(2, null);
delta[2][(int)'0'] = null;
delta[2][(int)'1'] = null;
Automate a = new Automate(0,
new Liste(2, null),
delta);
System.out.println("accepter = " + accepter(arg[0],a));

}

}

1 réponse

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
362
Bonjour,

Drôle de manière d'écrire les choses ; delta[0][(int)'0'], et surtout, ce n'est pas compatible avec le fonctionnement du cast.

pourquoi pas delta[0][0] tout simplement ?