예제 #1
0
        static void Main(string[] args)
        {
            bool                  loop = false;
            char                  loopverif;
            int                   NumOfEstados, NumOfEntradas;
            int                   NewStates          = 0;
            int                   NewStatesCompleted = 0;
            List <String>         NuevosEstados      = new List <string>();
            List <List <String> > Tabla    = new List <List <string> >();
            List <String>         Entradas = new List <string>();
            List <String>         Estados  = new List <string>();

            do
            {
                Console.WriteLine("Proyecto 2");
                Console.WriteLine("");
                Console.WriteLine("Ingrese el numero de estados: ");
                NumOfEstados = Int32.Parse(Console.ReadLine());
                Console.WriteLine("Ingrese el numero de entradas: ");
                NumOfEntradas = Int32.Parse(Console.ReadLine());
                String Salida;
                Entradas.Add("");
                for (int i = 1; i <= NumOfEntradas; i++)
                {
                    Console.WriteLine("Ingresa el nombre de la entrada numero " + (i).ToString() + ": ");
                    Entradas.Add(Console.ReadLine());
                }
                Tabla.Add(new List <string>(Entradas));
                for (int i = 0; i < NumOfEstados; i++)
                {
                    Console.WriteLine("Ingresa el nombre del estado numero " + (i + 1).ToString() + " (--> para indicar inicial, * para indicar final): ");
                    Estados.Add(Console.ReadLine());


                    for (int j = 1; j < NumOfEntradas + 1; j++)
                    {
                        Console.WriteLine("Ingresa la salida con la entrada " + Entradas[j] + " separada por comas y con el nombre de los estados como se ingreso (A,B): ");
                        Salida = Console.ReadLine();
                        if (Salida.Contains(","))
                        {
                            NewStates++;
                            NuevosEstados.Add(Salida);
                        }
                        Estados.Add(Salida);
                        Salida = "";
                    }
                    Tabla.Add(new List <String>(Estados));
                    Estados.Clear();
                }
                String Return;
                Estados.Clear();
                while (NewStatesCompleted < NewStates)
                {
                    Estados.Add(NuevosEstados[NewStatesCompleted]);
                    for (int i = 1; i <= NumOfEntradas; i++)
                    {
                        Return = Revisar(NuevosEstados[NewStatesCompleted], Tabla[0][i], Tabla);
                        Estados.Add(Return);
                        if (Return.Contains(","))
                        {
                            if (!NuevosEstados.Contains(Return))
                            {
                                NuevosEstados.Add(Return);
                                NewStates++;
                            }
                        }
                    }
                    Tabla.Add(new List <string>(Estados));
                    Estados.Clear();
                    NewStatesCompleted++;
                }
                PrintTable(NumOfEntradas, Tabla);
                Console.WriteLine("Desea ingresar otro cadena para verificar (Y/N): ");
                loopverif = Char.Parse(Console.ReadLine());
                if (loopverif == 'Y' || loopverif == 'y')
                {
                    loop = true;
                    Tabla.Clear();
                    Estados.Clear();
                    Entradas.Clear();
                    NuevosEstados.Clear();
                    NewStates          = 0;
                    NewStatesCompleted = 0;
                    NumOfEstados       = 0;
                    NumOfEntradas      = 0;
                }
                else if (loopverif == 'N' || loopverif == 'n')
                {
                    loop = false;
                }
            } while (loop);
        }