Exemple #1
0
        public void  enlazarNodosOrtoCol(ref Encabezado eActual, ref string acum, int nivel)
        {
            if (eActual.acceso != null)
            {
                string idCum     = "";
                string acumElace = "";
                Nodo   tmp       = eActual.acceso;

                if (tmp.unidad.nivel == nivel)
                {
                    acumElace += eActual.GetHashCode().ToString() + " -> " + tmp.GetHashCode().ToString() + ";\n";
                }


                while (tmp.abajo != null)
                {
                    if (tmp.unidad.nivel == nivel)
                    {
                        idCum += tmp.GetHashCode().ToString() + "[label=\"" + tmp.unidad.tipo.ToString() + "\"];\n";
                        if (tmp.abajo.unidad.nivel == nivel)
                        {
                            acumElace += tmp.GetHashCode().ToString() + " -> " + tmp.abajo.GetHashCode().ToString() + ";\n";
                        }
                    }
                    tmp = tmp.abajo;
                }


                if (tmp.unidad.nivel == nivel)
                {
                    idCum += tmp.GetHashCode().ToString() + "[label=\"" + tmp.unidad.tipo.ToString() + "\"];\n";
                }
/************************************************************************************************************/
                while (tmp.arriba != null)
                {
                    if (tmp.unidad.nivel == nivel && tmp.arriba.unidad.nivel == nivel)
                    {
                        acumElace += tmp.GetHashCode().ToString() + " -> " + tmp.arriba.GetHashCode().ToString() + ";\n";
                    }
                    tmp = tmp.arriba;
                }

                acum += idCum + acumElace + "\n";
            }
        }
Exemple #2
0
        public void generarMatriz(Matriz matriz, int nivel)
        {
            string acumInfo = "digraph G{ \n " +
                              "node[shape=box, style=filled, color=deepskyblue3];\n " +
                              "edge[color=black]; \n " +
                              "rankdir=UD; \n";


            string idCabeceraFila  = "";
            string cabeceraFila    = "";
            string idCabeceraCol   = "";
            string cabeceraCol     = "";
            string alineacionCol   = "{rank=min;Matriz;";
            string acumOrtogonales = "";

            string nodoAcum         = "";
            string anterior         = "";
            string anteriorCabecera = "";
            string filas            = "Matriz;";
            string columnas         = "Matriz";

            //recorrido de filas;
            Encabezado eFila = matriz.ncbzdoFilas.primero;
            Encabezado eCol  = matriz.ncbzdoColumnas.primero;

            if (eFila != null)
            {
                cabeceraFila += "Matriz ->" + eFila.GetHashCode().ToString() + ";\n";
                while (eFila.siguiente != null)
                {
                    idCabeceraFila += eFila.GetHashCode().ToString() + "[label = \"" + eFila.id.ToString() + "\"];\n";
                    cabeceraFila   += eFila.GetHashCode().ToString() + " -> " + eFila.siguiente.GetHashCode().ToString() + ";\n";

                    eFila = eFila.siguiente;
                }
                idCabeceraFila += eFila.GetHashCode().ToString() + "[label = \"" + eFila.id.ToString() + "\"];\n";
                while (eFila.anterior != null)
                {
                    cabeceraFila += eFila.GetHashCode().ToString() + " -> " + eFila.anterior.GetHashCode().ToString() + ";\n";
                    eFila         = eFila.anterior;
                }
            }
            if (eCol != null)
            {
                cabeceraCol += "Matriz ->" + eCol.GetHashCode().ToString() + ";\n";
                while (eCol.siguiente != null)
                {
                    string conversion = Convert.ToChar(eCol.id).ToString();
                    alineacionCol += eCol.GetHashCode().ToString() + ";";
                    idCabeceraCol += eCol.GetHashCode().ToString() + "[label=\"" + conversion + "\"];\n";
                    cabeceraCol   += eCol.GetHashCode().ToString() + " -> " + eCol.siguiente.GetHashCode().ToString() + ";\n";
                    // MessageBox.Show(eCol.GetHashCode().ToString());
                    enlazarNodosOrtoCol(ref eCol, ref acumOrtogonales, nivel);
                    eCol = eCol.siguiente;
                }
                string conv = Convert.ToChar(eCol.id).ToString();
                enlazarNodosOrtoCol(ref eCol, ref acumOrtogonales, nivel);
                alineacionCol += eCol.GetHashCode().ToString() + ";};\n\n";
                idCabeceraCol += eCol.GetHashCode().ToString() + "[label=\"" + conv + "\"];\n";
                while (eCol.anterior != null)
                {
                    cabeceraCol += eCol.GetHashCode().ToString() + " -> " + eCol.anterior.GetHashCode().ToString() + ";\n";
                    eCol         = eCol.anterior;
                }
            }


            acumInfo += alineacionCol + idCabeceraCol + idCabeceraFila + cabeceraCol + cabeceraFila + "\n\n" + acumOrtogonales + "\n}\n";

            const string f = "matriz.dot";
            StreamWriter w = new StreamWriter(f);

            w.WriteLine(acumInfo);
            w.Close();
            generarImagen("matriz.dot", "matriz.png");
        }