Ejemplo n.º 1
0
        public Inicial()
        {
            InitializeComponent();
            //this.cARGARToolStripMenuItem.Click += new System.EventHandler(this.button6_Click);

            pincel = new SolidBrush(Color.Red);
            panel_quintupla.Visible = false;
            panel_tabla.Visible = false;
<<<<<<< HEAD
            automata = new Clases.Automata();
            prueba = new Clases.Estado();
            timer1.Enabled = true;
            p = new Rectangle(50, 50, 50, 50);
            b1 = false;
=======
            panel_diagrama.Visible = false;
>>>>>>> origin/master


            crearAutomata();




        }
Ejemplo n.º 2
0
        public Transicion(Clases.Estado origen, String simbolo, Clases.Estado destino)
        {            
            this.origen = origen;
            this.simbolo = simbolo;
            this.destino = destino;
            this.doble = false;
            this.auto = false;
            if (origen.nombre.Equals(destino.nombre))
            {
                this.auto = true;
            }

        }
Ejemplo n.º 3
0
        private void agregar_transicion_button_Click(object sender, EventArgs e)
        {
            String origen = transicion_origen_comboBox.Text;
            String caracter = transicion_caracter_comboBox.Text;
            String destino = transicion_destino_comboBox.Text;

            Clases.Estado d = new Clases.Estado();
            Clases.Estado o = new Clases.Estado(); 

            //buscar destino
            for (int i = 0; i < automata.listEstados.Count; i++)
            {
                if (automata.listEstados.ElementAt(i).nombre.Equals(destino))
                {
                    d = automata.listEstados.ElementAt(i);

                }
            }

            //buscar origen

            for (int i = 0; i < automata.listEstados.Count; i++)
            {


                if (automata.listEstados.ElementAt(i).nombre.Equals(origen))
                {
                    o = automata.listEstados.ElementAt(i);
                  
                }

            }


            //todas las transiciones juntas


            LinkedList<Clases.Transicion> todasT = new LinkedList<Clases.Transicion>();

            for (int i = 0; i < automata.listEstados.Count; i++)
            {
                for (int j = 0; j < automata.listEstados.ElementAt(i).listTransiciones.Count; j++)
                {
                    todasT.AddLast(automata.listEstados.ElementAt(i).listTransiciones.ElementAt(j));
                }
            }

            Clases.Transicion t = new Clases.Transicion(o, caracter, d);

            for (int i = 0; i < todasT.Count; i++)
            {
                if (todasT.ElementAt(i).origen.nombre.Equals(d.nombre))
                {
                    t.doble = true;
                }
            }

            

            //agregar la transiccion

            o.listTransiciones.AddLast(t);

        }
Ejemplo n.º 4
0
        private void agregar_estado_button_Click(object sender, EventArgs e)
        {
            String estado = "Q" + automata.listEstados.Count;

            estados_textBox.Enabled = false;

            Clases.Estado es = new Clases.Estado(estado);

            if (automata.listEstados.Count>0)
            {
                es.x = automata.listEstados.Last().x + 150;
            }


            automata.listEstados.AddLast(es);
            reiniciarComboxEstados(transicion_origen_comboBox);
            reiniciarComboxEstados(transicion_destino_comboBox);
            reiniciarComboxEstados(aceptador_comboBox);
            reiniciarComboxEstados(inicial_comboBox);

            estados_textBox.Text = automata.listEstados.Count + "";
       
        }
Ejemplo n.º 5
0
     public static Clases.Automata reverso(Clases.Automata auto)
 {
     Clases.Automata nuevo= new Clases.Automata();
     int  cont=0;
     //vamos aver si tiene mas aceptadores
     for (int i = 0; i <auto.listEstados.Count; i++)
     {
         if(auto.listEstados.ElementAt(i).aceptador)
         {
             cont++;
         }
     }
     if(cont>1)//tiene mas aceptadores creamos un nuevo estado y todos loa ceptadores los mandamos por vacias a ese nuevo
     {
         Clases.Estado estadonuevo= new Clases.Estado("nuevo", true);
        for (int i = 0; i <auto.listEstados.Count; i++)
     {
         if(auto.listEstados.ElementAt(i).aceptador)
         {
             
             auto.listEstados.ElementAt(i).listTransiciones.AddLast(new Clases.Transicion(auto.listEstados.ElementAt(i).nombre,"-",estadonuevo.nombre));
             auto.listEstados.ElementAt(i).aceptador=false;
         }
     }
        auto.listEstados.AddLast(estadonuevo);
        nuevo=cambiar(auto);
       
     }
     else 
     {
         nuevo=cambiar(auto);
     }
     return nuevo;
 }
Ejemplo n.º 6
0
 public static void completar(Clases.Automata automata) 
 {
     
     Clases.Estado trampa= new Clases.Estado("Trampa");
     for (int p = 0; p < automata.alfabeto.Count; p++) 
     {
         trampa.listTransiciones.AddFirst(new Clases.Transicion("trampa", automata.alfabeto.ElementAt(p), "trampa"));
     }
         automata.listEstados.AddLast(trampa);
     for (int i = 0; i < automata.listEstados.Count;i++) 
     {
         if(automata.listEstados.ElementAt(i).listTransiciones.Count!=automata.alfabeto.Count)
         {
             Boolean estado = true;
             for (int j = 0; j < automata.alfabeto.Count; j++)
             {
                 for (int k = 0; k < automata.listEstados.ElementAt(i).listTransiciones.Count; k++)
                 {
                     
                     if(automata.alfabeto.ElementAt(j).Equals(automata.listEstados.ElementAt(i).listTransiciones.ElementAt(k).simbolo))
                     {
                         estado = false;
                         break;
                     }
                 }
                 if (estado == true) 
                 {
                     automata.listEstados.ElementAt(i).listTransiciones.AddLast(new Clases.Transicion(automata.listEstados.ElementAt(i).nombre, automata.alfabeto.ElementAt(j), trampa.nombre));
                 }
             }
         }
     }
 }
Ejemplo n.º 7
0
        public void creaEstado(MouseEventArgs e)
        {
            this.mouseX = e.X;
            this.mouseY = e.Y;


            bool ban = false;
            for (int i = 0; i < automata.listEstados.Count; i++)
            {
                if (mouseX >= automata.listEstados.ElementAt(i).x && mouseX <= automata.listEstados.ElementAt(i).x + automata.listEstados.ElementAt(i).ancho && mouseY >= automata.listEstados.ElementAt(i).y && mouseY <= automata.listEstados.ElementAt(i).y + automata.listEstados.ElementAt(i).alto)
                {
                    ban = true;

                    break;
                }
            }
            if (!ban)
            {
                String estado = "Q" + automata.listEstados.Count;

                estados_textBox.Enabled = false;

                Clases.Estado es = new Clases.Estado(estado);

                es.x = e.X;
                es.y = e.Y;


                automata.listEstados.AddLast(es);



               
            }
            

            

        }
Ejemplo n.º 8
0
        private void button3_Click(object sender, EventArgs e)
        {
            String estado = "Q" + automata.listEstados.Count;
            
            Clases.Estado es = new Clases.Estado(estado);

            if (automata.listEstados.Count > 0)
            {
                es.x = automata.listEstados.Last().x + 150;
            }


            automata.listEstados.AddLast(es);

            reiniciarComboxEstados(destino_tabla_comboBox);
            reiniciarComboxEstados(origen_tabla_comboBox);
            reiniciarComboxEstados(tabla_aceptadores_comboBox);
            reiniciarComboxEstados(tabla_inicial_comboBox);

            estados_textBox.Text = automata.listEstados.Count + "";

            cargartabla();




        }