示例#1
0
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }

            Complex_etat cet = obj as Complex_etat;

            if (cet != null)
            {
                Boolean vrai = true;
                foreach (Etat et in list_etat)
                {
                    if (!cet.list_etat.Contains(et))
                    {
                        return(2);
                    }
                }
                return(0);
            }
            else
            {
                throw new ArgumentException("Object is not a Temperature");
            }
        }
示例#2
0
        public void deterministe()
        {
            //List<Complex_etat> nouvel_list = new List<Complex_etat>();
            Complex_etat et = new Complex_etat();

            et.list_etat.Add(list_etat[0]);
            et.list_transition_partant.AddRange(list_etat[0].list_transition_partant);
            list_complex.Add(et);

            Complex_etat sauvegarde = new Complex_etat();;

            sauvegarde = et;
            Boolean cont = true;
            int     id   = 100;

            while (cont)
            {
                cont = false;
                foreach (Complex_etat e in list_complex)
                {
                    List <Char> car = new List <Char>();
                    car = e.char_list();

                    foreach (Char i in car)
                    {
                        Complex_etat nv_etat_comp = new Complex_etat();
                        foreach (Transition suiv in e.list_transition_partant)
                        {
                            if (suiv.car[0] == i)
                            {
                                if (!nv_etat_comp.list_etat.Contains(suiv.final))
                                {
                                    nv_etat_comp.list_etat.Add(suiv.final);
                                }
                                if (!nv_etat_comp.list_transition_partant.Contains(suiv))
                                {
                                    nv_etat_comp.list_transition_partant.Add(suiv);
                                }
                            }
                        }
                        foreach (Complex_etat cet in list_complex)
                        {
                            if (!(nv_etat_comp.CompareTo(cet) == 0))
                            {
                                nv_etat_comp.id = id;
                                id++;
                                sauvegarde.list_etat_complex_suiv.Add(nv_etat_comp);
                                sauvegarde.list_etat_suiv.AddRange(nv_etat_comp.list_etat);
                                list_complex.Add(nv_etat_comp);
                                sauvegarde = nv_etat_comp;
                            }
                            cont = true;
                        }
                    }
                }
            }
        }