private void ConfigurarTransicoes()
    {
        Console.WriteLine("Nessa etapa você deve informar para cada estado o símbolo de entrada e o estado de transição. \nCaso tenha terminado o mapeamento ou não desejas mapear para o estado informado, digite proximo.");
        Dictionary <string, Dictionary <string, string> > transicoes = new Dictionary <string, Dictionary <string, string> >();

        foreach (string estado in Estados)
        {
            Dictionary <string, string> mapaEstado = new Dictionary <string, string>();
            Console.WriteLine($"Para o estado: {estado}, digite o símbolo de entrada com o estado de transição separado por vírgula.\n Após aperte enter. Ex: Letra,estado");
            string mapeamento = "";
            do
            {
                mapeamento = Console.ReadLine();
                if (!mapeamento.Contains(","))
                {
                    Console.WriteLine("Entrada não está no formato especificado.");
                    continue;
                }

                string[] vetorLeitura = mapeamento.Split(",");
                if (!Alfabeto.Contains(vetorLeitura[0]) || !Estados.Contains(vetorLeitura[1]))
                {
                    Console.WriteLine("Entrada não está no alfabeto cadastrado ou estado informado não foi cadastrado previamente. Verfique e tente novamente.");
                    continue;
                }

                mapaEstado.Add(vetorLeitura[0], vetorLeitura[1]);
            } while (!mapeamento.Equals("proximo"));
            transicoes.Add(estado, mapaEstado);
        }
        Transicoes = transicoes;
    }
    private void ConfigurarEstadoInicial()
    {
        string leitura;

        do
        {
            Console.WriteLine("Insira qual estado será o início - Após pressione ENTER");
            leitura = Console.ReadLine();
        } while (!Estados.Contains(leitura));
        EstadoInicial = leitura;
    }
예제 #3
0
        public string AgregarEstado(Estado e)
        {
            string msg = "";

            if (!Estados.Contains(e))
            {
                Estados.Add(e);
                msg = "Ok";
            }
            else
            {
                msg = "Estado existente";
            }
            return(msg);
        }
예제 #4
0
        public string EliminarEstado(Estado e)
        {
            string msg = "";

            if (Estados.Contains(e))
            {
                ListaTransiciones.RemoveAll(t => t.q.Equals(e.Etiqueta) || t.p.Equals(e.Etiqueta));
                Estados.Remove(e);
                msg = "Ok";
            }
            else
            {
                msg = "Error al eliminar el estado";
            }
            return(msg);
        }