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"); } }
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 = ""; }
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 = ""; }
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"); } } }