public void Mostrar() { if (this.primero != null && this.primero.izquierda != null && this.primero.derecha != null && this.estadoInicial != null && this.estadoFinal != null) { Console.WriteLine("alfabeto A = {0,1}"); Console.WriteLine("S(->" + this.estadoInicial.nombre, ")"); Console.WriteLine("F=(" + this.estadoFinal.nombre, ")"); Vertice aux = this.primero; while (aux != null) { Console.WriteLine("S(", aux.nombre, ",0)=", aux.izquierda.ver.nombre); Console.WriteLine("S(", aux.nombre, ",1)=", aux.derecha.ver.nombre); aux = aux.sig; } } else { Console.WriteLine("automata aun no se ha creado"); } }
public void crearEstado() { if (this.primero == null) { Console.WriteLine("ingrese letra de primer estado"); this.primero = new Vertice(char.Parse(Console.ReadLine())); this.ultimo = this.primero; } else { Console.WriteLine("ingrese letra del estado"); Vertice nuevo = new Vertice(char.Parse(Console.ReadLine())); while (this.existe(this.primero, nuevo.getNombre())) { Console.WriteLine("ingrese letra de estado"); nuevo.setNombre(char.Parse(Console.ReadLine())); } this.ultimo.setProximo(nuevo); this.ultimo = nuevo; } Console.ReadKey(true); }
public void estados() { if (this.primero != null) { char inicial = raw_input("ingrese letra de vertice inicial"); char final = raw_input("ingrese letra de vertice final"); while (!this.existe(inicial, this.primero)) { inicial = raw_input("ingrese letra de vertice inicial"); } while (!this.existe(final, this.primero)) { final = raw_input("ingrese letra de vertice final"); } Vertice aux = this.primero; while (aux.nombre != inicial) { aux = aux.sig; } Vertice aux2 = this.primero; while (aux2.nombre != final) { aux2 = aux2.sig; } this.estadoInicial = aux; this.estadoFinal = aux2; } else { Console.WriteLine("aun no existe ni un solo estado"); } }
public void crearVertice() { Vertice nue = new Vertice(); nue.nombre = raw_input("Digite la letra del estado: "); if (this.primero == null) { this.primero = nue; this.ultimo = this.primero; } else { while (existe(nue.nombre, this.primero)) { nue.nombre = raw_input("Digite nuevamente la letra del estado: "); } this.ultimo.sig = nue; nue.ant = this.ultimo; this.ultimo = nue; } raw_input("estado registrado correctamente."); }
public void enlazarVertices() { char auxNod = 'a'; char auxNod2 = 'b'; if (this.primero != null) { Vertice auxw = this.primero; while (auxw != null) { Console.WriteLine(auxw.nombre); auxw = auxw.sig; } auxNod = raw_input("\nDigite la letra del estado al cual desea enlazar: "); while (!this.existe(auxNod, this.primero)) { auxNod = raw_input("\nDigite la letra del estado al cual desea enlazar: "); } auxNod2 = raw_input("\nDigite la letra del estado a donde se dirige: "); while (!this.existe(auxNod2, this.primero)) { auxNod2 = raw_input("\nDigite la letra del estado a donde se dirige: "); } Vertice aux = optenerDireccion(auxNod); Vertice aux2 = optenerDireccion(auxNod2); //arco auxiliar 1 apunta al vertice Vertice nueArc = nuevoArco(aux2); while (nueArc.clave < 0) { nueArc.clave = input("\nDigite el valor del enlace:(1/0) "); } if (nueArc.clave == 0) { if (aux.izquierda == null) { aux.izquierda = nueArc; Console.WriteLine("\nEnlace creado correctamente."); } else { Console.WriteLine("arco ya utilizado"); } } else if (nueArc.clave == 1) { if (aux.derecha == null) { aux.derecha = nueArc; Console.WriteLine("\nEnlace creado correctamente."); } else { Console.WriteLine("arco ya utilizado"); } } } }
public void enlazarEstados() { if (this.primero != null) { Console.WriteLine("ingrese letra de primer estado"); char inicio = char.Parse(Console.ReadLine()); while (!this.existe(this.primero, inicio)) { Console.WriteLine("ingrese letra de primer estado"); inicio = char.Parse(Console.ReadLine()); } Console.WriteLine("ingrese letra de primer estado"); char final = char.Parse(Console.ReadLine()); while (!this.existe(this.primero, final)) { Console.WriteLine("ingrese letra de primer estado"); final = char.Parse(Console.ReadLine()); } Console.WriteLine("digite el numero del enlace (1/0):"); int enlace = Console.Read(); while (enlace != 1 && enlace != 0) { Console.WriteLine("digite el numero del enlace (1/0):"); enlace = Console.Read(); } Console.WriteLine("apilar o desapilar (1/0)"); int accion = Console.Read(); while (accion != 1 && accion != 0) { Console.WriteLine("apilar o desapilar (1/0)"); accion = Console.Read(); } Console.WriteLine("que simbolo estara en la sima(z,a o b)"); char simbolo = char.Parse(Console.ReadLine()); while (simbolo != 'z' && simbolo != 'a' && simbolo != 'b') { Console.WriteLine("que simbolo estara en la sima(z,a o b)"); simbolo = char.Parse(Console.ReadLine()); } Vertice aux1 = busqueda(this.primero, inicio); Vertice aux2 = busqueda(this.primero, final); //antes abajo estaba aux sin el 1 if (!enlaceExiste(accion, simbolo, aux1)) { if ((accion == 0) && (simbolo == 'a')) { aux1.setArco(new Vertice(aux2, enlace, accion, simbolo), 0); } else if ((accion == 0) && (simbolo == 'b')) { aux1.setArco(new Vertice(aux2, enlace, accion, simbolo), 1); } else if ((accion == 1) && (simbolo == 'a')) { aux1.setArco(new Vertice(aux2, enlace, accion, simbolo), 2); } else if ((accion == 1) && (simbolo == 'b')) { aux1.setArco(new Vertice(aux2, enlace, accion, simbolo), 3); } //para 'z' else if ((accion == 0) && (simbolo == 'z')) { aux1.setArco(new Vertice(aux2, enlace, accion, simbolo), 4); } else if ((accion == 1) && (simbolo == 'z')) { aux1.setArco(new Vertice(aux2, enlace, accion, simbolo), 5); } Console.WriteLine("enlace creado correctamente"); Console.ReadKey(true); } else { Console.WriteLine("ya existe ese arco"); } } else { Console.WriteLine("no existe ni un solo estado"); } }
public void setProximo(Vertice proximo) { this.proximo = proximo; }
//para vertice public Vertice(char nombre) { this.Arco = new Vertice[6]; this.nombre = nombre; this.proximo = null; }