Пример #1
0
        private void pantallaInicial()
        {
            Graphics g = GArbol.CreateGraphics();

            g.DrawString("HEAP", new Font("Algerian", 66, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(GArbol.Bounds.Width / 2 - 180, 55));
            g.DrawString("SORT", new Font("Algerian", 66, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(GArbol.Bounds.Width / 2 - 60, 140));
        }
Пример #2
0
        private void button2_Click(object sender, EventArgs e)
        {
            ingresoNumeros.Text    = "";
            ingresoNumeros.Enabled = true;
            button1.Enabled        = true;
            HeapMinimo.Enabled     = true;
            Graphics g = GArbol.CreateGraphics();

            g.Clear(Color.Gray);
            button2.Visible   = false;
            button3.Visible   = false;
            comboBox1.Enabled = true;
            iPosLineasX       = 0;
            posY  = 30;
            iPosX = 0;
        }
Пример #3
0
        private void graficarNodoArrOrdenado(int num)
        {
            Graphics g = GArbol.CreateGraphics();

            g.FillEllipse(System.Drawing.Brushes.Green, posXArrOrd, GArbol.Bounds.Height - 42, 30, 30);

            if (num < -9 || num > 99)
            {
                g.DrawString("" + num, new Font("Algerian", 10), System.Drawing.Brushes.Black, new Point(posXArrOrd + 3, GArbol.Bounds.Height - 38));
            }
            else
            {
                g.DrawString("" + num, new Font("Algerian", 10), System.Drawing.Brushes.Black, new Point(posXArrOrd + 9, GArbol.Bounds.Height - 38));
            }

            posXArrOrd += 30;
        }
Пример #4
0
        private void generarHeapMinimo(int[] arr)
        {
            int[]    temp = new int[arr.Length + 1];// se crea un arreglo temporal para manejar los indices desde 17
            Graphics g    = GArbol.CreateGraphics();

            escribirMinHeap();
            for (int i = 0; i < arr.Length; i++)
            {
                temp[i + 1] = arr[i];
            }


            for (int i = 2; i < temp.Length; i++)//se revisa que la raiz sea menor que los hijos, si no lo es, se hace el cambio
            {
                int padre = i / 2, numTemp;

                if (temp[i] < temp[padre])
                {
                    graficarArbol(temp, i + 1, -1, false);
                    graficarArbol(temp, i + 1, i, false);
                    //System.Threading.Thread.Sleep(350);

                    numTemp     = temp[i];
                    temp[i]     = temp[padre];
                    temp[padre] = numTemp;
                    graficarArbol(temp, i + 1, -1, false);

                    i = 1;
                    System.Threading.Thread.Sleep(Convert.ToInt32(300 / velocity));
                }
                else
                {
                    graficarArbol(temp, i + 1, -1, false);
                }
            }

            for (int i = 0; i < arr.Length; i++)//se regresa al arreglo original
            {
                arr[i] = temp[i + 1];
            }
        }
Пример #5
0
        private void graficarNodoArbol(int num, int tipo)
        {
            Graphics g = GArbol.CreateGraphics();

            if (iPosX >= 1)//grafico de la linea
            {
                g.DrawLine(new Pen(Color.White, 2), new Point(posX[iPosX] + 15, posY + 3), new Point(lineasX[iPosLineasX] + 15, posY - 41));
                iPosLineasX++;
            }
            if (tipo == 1)//normal
            {
                g.FillEllipse(System.Drawing.Brushes.White, posX[iPosX], posY, 30, 30);

                if (num < -9 || num > 99)
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 4, posY + 9));
                }
                else
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 10, posY + 9));
                }
            }
            if (tipo == 2)//seleccionado
            {
                g.FillEllipse(System.Drawing.Brushes.Red, posX[iPosX], posY, 30, 30);

                if (num < -9 || num > 99)
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 4, posY + 9));
                }
                else
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 10, posY + 9));
                }
            }
            if (tipo == 3)//Ordenado
            {
                g.FillEllipse(System.Drawing.Brushes.Green, posX[iPosX], posY, 30, 30);

                if (num < -9 || num > 99)
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 4, posY + 9));
                }
                else
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Black, new Point(posX[iPosX] + 10, posY + 9));
                }
            }
            if (tipo == 4)//eliminado
            {
                g.FillEllipse(System.Drawing.Brushes.Gray, posX[iPosX], posY, 30, 30);

                if (num < -9 || num > 99)
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Gray, new Point(posX[iPosX] + 4, posY + 9));
                }
                else
                {
                    g.DrawString("" + num, new Font("Algerian", 10, FontStyle.Bold), System.Drawing.Brushes.Gray, new Point(posX[iPosX] + 10, posY + 9));
                }
                iPosLineasX--;
                if (iPosLineasX >= 0)
                {
                    g.DrawLine(new Pen(Color.Gray, 2), new Point(posX[iPosX] + 15, posY + 3), new Point(lineasX[iPosLineasX] + 15, posY - 41));
                }
            }

            if (iPosX == 0 || iPosX == 2 || iPosX == 6)
            {
                posY += 70;
            }

            iPosX++;
        }