예제 #1
0
        public void RecorridoPaso(Cabezal cabezal)
        {
            cabezal.caracter = dataGridView1[cabezal.posicion, 0].Value.ToString();
            bool encontrado = false;

            for (int contador = 0; contador < transiciones.Count; contador++)
            {
                if (cabezal.estadoD == transiciones[contador].estadoinicial && transiciones[contador].caracterleido == cabezal.caracter)
                {
                    encontrado = true;
                    paso       = cabezal.posicion;
                    //dataGridView1.Columns[paso].DefaultCellStyle.BackColor = Color.Yellow;
                    switch (transiciones[contador].movimiento.ToUpper())
                    {
                    case "R":
                        cabezal.posicion++;
                        break;

                    case "D":
                        cabezal.posicion++;
                        break;

                    case "L":
                        cabezal.posicion--;
                        break;

                    case "I":
                        cabezal.posicion--;
                        break;

                    case "0":
                        break;

                    case "P":
                        textBox2.Text = "Estado halted";
                        break;

                    default:
                        break;
                    }

                    cabezal.estadoD  = transiciones[contador].estadofinal;
                    cabezal.caracter = dataGridView1[cabezal.posicion, 0].Value.ToString();

                    dataGridView1.Columns[paso].DefaultCellStyle.BackColor             = Color.White;
                    dataGridView1.Columns[cabezal.posicion].DefaultCellStyle.BackColor = Color.Yellow;

                    dataGridView1[paso, 0].Value = transiciones[contador].caracteraescribir.ToString();
                    textBox3.Text = cabezal.estadoD;
                    break;
                }
            }

            if (!encontrado)
            {
                MessageBox.Show("La maquina no pudo encontrar el siguiente paso");
            }
        }
예제 #2
0
 private void ResetParcial()
 {
     transiciones  = new List <Transiciones>();
     cabezal       = new Cabezal();
     PrimeraVuelta = true;
     paso          = 0;
     dataGridView1.Columns.Clear();
     dataGridView1.Rows.Clear();
     textBox1.Text = "";
     textBox2.Text = "";
     textBox3.Text = "";
 }
예제 #3
0
 private void ResetCompleto()
 {
     Pasos         = new List <String>();
     alfabeto      = null;
     estadoinicial = null;
     numestados    = null;
     transiciones  = new List <Transiciones>();
     cabezal       = new Cabezal();
     palabra       = null;
     PrimeraVuelta = true;
     paso          = 0;
     dataGridView1.Columns.Clear();
     dataGridView1.Rows.Clear();
     textBox1.Text = "";
     textBox2.Text = "";
     textBox3.Text = "";
 }
예제 #4
0
        public void Recorrido(Cabezal cabezal, bool flag2)
        {
            int posanterior       = 0;
            int contadorenciclado = 0;

            while (flag2)
            {
                cabezal.caracter = dataGridView1[cabezal.posicion, 0].Value.ToString();
                for (int contador = 0; contador < transiciones.Count; contador++)
                {
                    if (cabezal.estadoD == transiciones[contador].estadoinicial && transiciones[contador].caracterleido == cabezal.caracter)
                    {
                        DataGridViewColumn columna;
                        columna = new DataGridViewColumn();
                        columna.CellTemplate = new DataGridViewTextBoxCell();
                        columna.Width        = 40;
                        columna.Resizable    = DataGridViewTriState.False;
                        dataGridView1.Columns.Add(columna);
                        dataGridView1[dataGridView1.ColumnCount - 1, 0].Value = "_";

                        posanterior = cabezal.posicion;
                        dataGridView1.Columns[posanterior].DefaultCellStyle.BackColor = Color.White;
                        switch (transiciones[contador].movimiento.ToUpper())
                        {
                        case "R":
                            cabezal.posicion++;
                            break;

                        case "D":
                            cabezal.posicion++;
                            break;

                        case "L":
                            cabezal.posicion--;
                            break;

                        case "I":
                            cabezal.posicion--;
                            break;

                        case "0":
                            break;

                        case "P":
                            flag2         = false;
                            textBox2.Text = "Estado halted";
                            break;

                        default:
                            break;
                        }

                        cabezal.estadoD  = transiciones[contador].estadofinal;
                        cabezal.caracter = dataGridView1[cabezal.posicion, 0].Value.ToString();

                        dataGridView1.Columns[posanterior].DefaultCellStyle.BackColor      = Color.White;
                        dataGridView1.Columns[cabezal.posicion].DefaultCellStyle.BackColor = Color.Yellow;

                        dataGridView1[posanterior, 0].Value = transiciones[contador].caracteraescribir.ToString();
                        textBox3.Text = cabezal.estadoD;
                    }
                    else
                    {
                        contadorenciclado++;
                        if (contadorenciclado == 500)
                        {
                            if (cabezal.caracter != "_")
                            {
                                MessageBox.Show("La misma instruccion se ha realizado 500 veces la maquina se ha detenido revise la maquina");
                                textBox2.Text = "Error";
                            }
                            else
                            {
                                MessageBox.Show("La misma instruccion se ha realizado 500 veces la maquina se ha detenido revise la maquina, se considera aceptada");
                                textBox2.Text = "Revisar maquina";
                            }
                            flag2 = false;
                        }
                    }
                }



                if (cabezal.posicion == dataGridView1.Columns.Count - 1)
                {
                    flag2 = false;
                    MessageBox.Show("Se ha movido repetidas veces en posiciones vacías");
                }
            }
        }