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