コード例 #1
0
 void insertarr(NodoB clave, Pagina raiz)
 {
     agregar(clave, raiz);
     if (pivote)
     {
         inicio           = new Pagina();
         inicio.cuentas   = 1;
         inicio.claves[0] = inserta;
         inicio.ramas[0]  = raiz;
         inicio.ramas[1]  = enlace;
     }
 }
コード例 #2
0
        void insertarClave(NodoB clave, Pagina raiz, int posicion)
        {
            int i = raiz.cuentas;

            while (i != posicion)
            {
                raiz.claves[i]    = raiz.claves[i - 1];
                raiz.ramas[i + 1] = raiz.ramas[i];
                --i;
            }
            raiz.claves[posicion]    = clave;
            raiz.ramas[posicion + 1] = enlace;
            raiz.cuentas             = ++raiz.cuentas;

            Console.WriteLine("INSERTO");
        }
コード例 #3
0
        public void graficarPagina(StringBuilder n, Pagina raiz)
        {
            Pagina nodo = raiz;

            if (nodo == null)
            {
            }
            else
            {
                if (nodo.cuentas != 0)
                {
                    int k = 0;
                    n.Append("cancion_" + nodo.claves[0].nofactura + " [label= \"");

                    for (k = 1; k <= nodo.cuentas; k++)
                    {
                        n.Append("<r" + (k - 1) + ">" + " | " + "<cl" + k + ">" + "IdTransacción: " + nodo.claves[k - 1].nofactura + " &#92;" + "nFecha: " + nodo.claves[k - 1].fecha + " &#92;" + "nTotal: " + nodo.claves[k - 1].idtransaccion + " &#92;" + "nUsuario: " + nodo.claves[k - 1].nombreUsuario + " | ");
                    }
                    n.Append("<r" + (k - 1) + "> \"];\n");

                    for (k = 0; k <= nodo.cuentas; k++)
                    {
                        if (nodo.ramas[k] != null)
                        {
                            if (nodo.ramas[k].cuentas != 0)
                            {
                                n.Append("cancion_" + nodo.claves[0].nofactura + ":r" + k + " -> cancion_" + nodo.ramas[k].claves[0].nofactura + ";\n");

                                Console.WriteLine(n.ToString());
                            }
                            else
                            {
                            }
                        }
                    }

                    for (k = 0; k <= nodo.cuentas; k++)
                    {
                        graficarPagina(n, nodo.ramas[k]);
                    }
                }
                else
                {
                }
            }
        }
コード例 #4
0
        public void graficarBuscar(Pagina raiz, string nombre)
        {
            Pagina nodo = raiz;

            if (nodo == null)
            {
            }
            else
            {
                if (nodo.cuentas != 0)
                {
                    int k = 0;

                    for (k = 1; k <= nodo.cuentas; k++)
                    {
                        if (nombre.CompareTo(nodo.claves[k - 1].nombreUsuario) == 0)
                        {
                            token += nodo.claves[k - 1].nofactura + "->";
                        }
                    }

                    for (k = 0; k <= nodo.cuentas; k++)
                    {
                        if (nodo.ramas[k] != null)
                        {
                            if (nodo.ramas[k].cuentas != 0)
                            {
                            }
                            else
                            {
                            }
                        }
                    }

                    for (k = 0; k <= nodo.cuentas; k++)
                    {
                        graficarBuscar(nodo.ramas[k], nombre);
                    }
                }
                else
                {
                }
            }
        }
コード例 #5
0
        void agregar(NodoB clave, Pagina raiz)
        {
            int pos = 0;         /// k=0;

            pivote = false;      // EmpA=false;

            if (vacio(raiz))     /// crea los nodos para insertar en la pagina
            {
                pivote  = true;  //Emp=false;
                inserta = clave; // X=clave
                enlace  = null;  //Xr=null;
            }
            else
            {
                pos = existeNodo(clave, raiz);

                if (existe)
                {
                    pivote = false;
                }
                else
                {
                    agregar(clave, raiz.ramas[pos]);  // se vuelve a llamar para crear el nodo a insertar en la pagina

                    if (pivote)
                    {
                        if (raiz.cuentas < 4)
                        {
                            pivote = false;
                            insertarClave(inserta, raiz, pos);
                        }
                        else
                        {
                            pivote = true;
                            dividirPagina(inserta, raiz, pos);
                            Console.WriteLine("inserto");
                        }
                    }
                }
            }
        }
コード例 #6
0
        public void recorrerArbol(Pagina raiz, string fecha1, string fecha2)
        {
            try
            {
                DateTime f1   = Convert.ToDateTime(fecha1);
                DateTime f2   = Convert.ToDateTime(fecha2);
                Pagina   nodo = raiz;

                if (nodo == null)
                {
                }
                else
                {
                    if (nodo.cuentas != 0)
                    {
                        int k = 0;

                        for (k = 1; k <= nodo.cuentas; k++)
                        {
                            string   af  = nodo.claves[k - 1].fecha;
                            DateTime f11 = Convert.ToDateTime(af);

                            if (f11.CompareTo(f1) >= 0 && f11.CompareTo(f2) <= 0)
                            {
                                fechas = fechas + nodo.claves[k - 1].nofactura + "," + nodo.claves[k - 1].fecha + "," + nodo.claves[k - 1].idtransaccion + "," + nodo.claves[k - 1].nombreUsuario + ";";
                                contador++;
                            }
                        }

                        for (k = 0; k <= nodo.cuentas; k++)
                        {
                            recorrerArbol(nodo.ramas[k], fecha1, fecha2);
                        }
                    }
                }
            }
            catch (Exception ee)
            { }
        }
コード例 #7
0
        public int existeNodo(NodoB clave, Pagina raiz)
        {
            int valor = 0;

            if (clave.nofactura < raiz.claves[0].nofactura)
            {
                existe1 = false;
                valor   = 0;
            }
            else
            {
                valor = raiz.cuentas;
                while (clave.nofactura < raiz.claves[valor - 1].nofactura && valor > 1)
                {
                    --valor;
                }

                existe  = (clave.nofactura < raiz.claves[valor - 1].nofactura);
                existe1 = (clave.nofactura == raiz.claves[valor - 1].nofactura);
            }

            return(valor);
        }
コード例 #8
0
        void dividirPagina(NodoB clave, Pagina raiz, int posicion)
        {
            int pos    = 0;
            int Posmda = 0;

            if (posicion <= 2)
            {
                Posmda = 2;
            }
            else
            {
                Posmda = 3;
            }
            Pagina Mder = new Pagina();

            pos = Posmda + 1;
            while (pos != 5)
            {
                Mder.claves[(pos - Posmda) - 1] = raiz.claves[pos - 1];
                Mder.ramas[pos - Posmda]        = raiz.ramas[pos];
                ++pos;
            }
            Mder.cuentas = 4 - Posmda;
            raiz.cuentas = Posmda;
            if (posicion <= 2)
            {
                insertarClave(clave, raiz, posicion);
            }
            else
            {
                insertarClave(clave, Mder, (posicion - Posmda));
            }
            inserta       = raiz.claves[raiz.cuentas - 1];
            Mder.ramas[0] = raiz.ramas[raiz.cuentas];
            raiz.cuentas  = --raiz.cuentas;
            enlace        = Mder;
        }
コード例 #9
0
 public bool vacio(Pagina raiz)
 {
     return(raiz == null || raiz.cuentas == 0);
 }