示例#1
0
        public Dijkstra()
        {
            InitializeComponent();
            initialisationMatrice();
            numinitial = Convert.ToInt32(textBox1.Text);
            numfinal   = Convert.ToInt32(textBox2.Text);
            Node2 N0 = new Node2();

            N0.numero = numinitial;
            List <GenericNode> solution = arbreTravail.RechercheSolutionAEtoile(N0);

            arbreTravail.GetVoidSearchTree(trvTravail);

            trvTravail.LabelEdit = true;
        }
示例#2
0
        //Vérifie les fermés et ouverts de l'utilisateur et affiche correction si nécessaire
        private void valider_btn_Click(object sender, EventArgs e)
        {
            SearchTree g  = new SearchTree();
            Node2      N0 = new Node2();

            N0.numero = numinitial;
            // Recherche du meilleur chemin à partir de ce noeud initial et final :
            List <GenericNode> solution = g.RechercheSolutionAEtoile(N0);

            string fermesUser  = F_txtBox.Text;
            string ouvertsUser = O_txtBox.Text;
            bool   correct;

            //Comparer la liste des fermés du user avec celui qui est correct :
            correct = VérifListe(g.ListeFermes, fermesUser, nbValider);
            if (correct == true)
            {
                F_txtBox.ForeColor = Color.Green;
                correctionFermes_lbl.Hide();
            }
            else
            {
                F_txtBox.ForeColor = Color.Red;
                correctionFermes_lbl.Show();
                correctionFermes_lbl.Text      = g.ListeFermes[nbValider];
                correctionFermes_lbl.ForeColor = Color.Green;
                Erreur = true;
            }
            //Comparer la liste des ouverts du user avec celui qui est correct :
            correct = VérifListe(g.ListeOuverts, ouvertsUser, nbValider);
            if (correct == true)
            {
                O_txtBox.ForeColor = Color.Green;
                correctionOuverts_lbl.Hide();
            }
            else
            {
                O_txtBox.ForeColor = Color.Red;
                correctionOuverts_lbl.Show();
                correctionOuverts_lbl.Text      = g.ListeOuverts[nbValider];
                correctionOuverts_lbl.ForeColor = Color.Green;
                Erreur = true;
            }

            nbValider++;
            valider_btn.Hide();
            suivant_btn.Show();
        }
示例#3
0
        //Affichage automatique des solutions correctes dans le txtBox à la prochaine étape :
        private void suivant_btn_Click(object sender, EventArgs e)
        {
            SearchTree g  = new SearchTree();
            Node2      N0 = new Node2();

            N0.numero = numinitial;
            // Recherche du meilleur chemin à partir de ce noeud initial et final :
            List <GenericNode> solution = g.RechercheSolutionAEtoile(N0);

            if ((F_txtBox.ForeColor == Color.Red) || (F_txtBox.Text == ""))
            {
                F_txtBox.Text = correctionFermes_lbl.Text;
            }
            F_txtBox.ForeColor = Color.Black;

            if ((O_txtBox.ForeColor == Color.Red) || (O_txtBox.Text == ""))
            {
                O_txtBox.Text = correctionOuverts_lbl.Text;
            }
            O_txtBox.ForeColor = Color.Black;

            //Gestion des boutons :
            if (nbValider == g.etapeDij)
            {
                correctionFermes_lbl.Hide();
                correctionOuverts_lbl.Hide();
                suivant_btn.Hide();
                valider_btn.Hide();
                treeViewFinal_btn.Show();
            }
            else
            {
                correctionFermes_lbl.Hide();
                correctionOuverts_lbl.Hide();
                suivant_btn.Hide();
                valider_btn.Show();
            }
            if (Erreur == true)
            {
                Note1 = 0;
            }
            else
            {
                Note1 = 2;
            }
        }
示例#4
0
        //Calcul et affichage de l'arbre avec le meilleur chemin (bouton TreeView final) :
        private void treeViewFinal_btn_Click(object sender, EventArgs e)
        {
            SearchTree g  = new SearchTree();
            Node2      N0 = new Node2();

            N0.numero = numinitial;
            // Recherche du meilleur chemin à partir de ce noeud initial et final :
            List <GenericNode> solution = g.RechercheSolutionAEtoile(N0);

            //Affichage de ce meilleur chemin dans listBox1
            Node2 N1 = N0;

            for (int i = 1; i < solution.Count; i++)
            {
                Node2 N2 = (Node2)solution[i];
                listBox1.Items.Add(Convert.ToString(N1.numero)
                                   + "--->" + Convert.ToString(N2.numero)
                                   + "   : " + Convert.ToString(matrice[N1.numero, N2.numero]));
                N1 = N2;
            }
            g.GetSearchTree(treeView1);
        }
示例#5
0
        private void btnCorrection_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            numinitial = Convert.ToInt32(textBox1.Text);
            numfinal   = Convert.ToInt32(textBox2.Text);
            SearchTree g  = new SearchTree();
            Node2      N0 = new Node2();

            N0.numero = numinitial;
            List <GenericNode> solution = g.RechercheSolutionAEtoile(N0);
            Node2 N1 = N0;

            for (int i = 1; i < solution.Count; i++)
            {
                Node2 N2 = (Node2)solution[i];
                listBox1.Items.Add(Convert.ToString(N1.numero)
                                   + "--->" + Convert.ToString(N2.numero)
                                   + "   : " + Convert.ToString(matrice[N1.numero, N2.numero]));
                N1 = N2;
            }
            g.GetSearchTree(treeView1);

            CompareTreeNodes(trvTravail, treeView1);
        }
示例#6
0
        public override double GetArcCost(GenericNode N2)
        {
            Node2 N2bis = (Node2)N2;

            return(Dijkstra.matrice[numero, N2bis.numero]);
        }
示例#7
0
        // Méthodes abstrates, donc à surcharger obligatoirement avec override dans une classe fille
        public override bool IsEqual(GenericNode N2)
        {
            Node2 N2bis = (Node2)N2;

            return(numero == N2bis.numero);
        }