/// <summary> /// hace correr el algoritmo /// </summary> public void RYA() { EstructuraDatos ed = this.creaEstructuraDatos(); this.calculaSolucionInicial(); T o = this.calculaNodoInicial(); while (!this.fin(o, ed)) { T[] hijos = this.expandir(o); for (int i = 0; i < hijos.Length; i++) { if (this.esMejorCota(hijos[i])) { if (this.esSolucion(hijos[i])) { this.actualizaSolucion(hijos[i]); this.eliminaNodos(hijos[i], ed); } else { ed.añade(hijos[i]); } } } if (ed.esVacia()) { o = null; } else { o = ed.obtener(); } } }
static void Main() { try { Conexion oConexion = new Conexion(); if ((Conexion.company != null) && (Conexion.company.Connected)) { Conexion.application.StatusBar.SetText("Verificando estructura de datos del AddOn...", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_None); EstructuraDatos oEstructuraDatos = new EstructuraDatos(); Conexion.application.StatusBar.SetText("Verificación completada.", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_None); GC.KeepAlive(oConexion); Application.Run(); } else { MessageBox.Show("No se pudo obtener la compañía desde la sesión actual, reinicie la aplicación. ", "No se pudo iniciar AddOn Mobile"); Application.Exit(); } Application.Run(); } catch (Exception ex) { MessageBox.Show("Se ha producido un error que impidió la ejecución de la aplicación: " + ex.Message, "No se pudo iniciar AddOn Mobile"); } }
/// <summary> /// corta el algoritmo cuando se llege al fin. /// Si o es igual a null retorna cierto /// </summary> /// <param name="o"></param> /// <param name="ed"></param> /// <returns></returns> public abstract bool fin(T o, EstructuraDatos ed);
/// <summary> /// elimina los nodos de la estructura de datos /// </summary> /// <param name="o"></param> /// <param name="ed"></param> public abstract void eliminaNodos(T o, EstructuraDatos ed);