elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  crear grafos en visual
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: crear grafos en visual  (Leído 16,745 veces)
matoreggae

Desconectado Desconectado

Mensajes: 46



Ver Perfil
crear grafos en visual
« en: 15 Julio 2007, 17:35 pm »

necesito crear un grafo en visual y no tengo ni idea tengo algo de codigo hecho


« Última modificación: 17 Julio 2007, 16:53 pm por matoreggae » En línea

Resistiendo me encuentro a la opresion de este mundo, que me aplasta con fuerza aunque su intento es absurdo
MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: craea
« Respuesta #1 en: 15 Julio 2007, 21:18 pm »

se un poco más explicito, muestranos tu code...

Atentamente,


Juan Manuel Lombana
Medellín - Colombia


En línea


matoreggae

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: craea
« Respuesta #2 en: 15 Julio 2007, 22:34 pm »

Este es el codigo del formulario

Código
  1. Option Explicit
  2. Const Nulo = 0    '' Posicion NO Valida de la Lista
  3. Dim L       As New Listas
  4. Dim P       As New Pilas
  5. Dim C       As New Colas
  6. Dim G       As New Grafos
  7.  
  8. Private Sub cmd_apilar_Click()
  9.  
  10.    Dim X       As Variant
  11.  
  12.    Randomize
  13.  
  14.    While Not P.EstaLlena
  15.        X = Int(Rnd(100) * 100)
  16.        P.Apilar X
  17.    Wend
  18.  
  19. End Sub
  20.  
  21. Private Sub cmd_eliminar_Click()
  22.  
  23.    Dim Q       As Long
  24.    Dim X       As Variant
  25.  
  26.    X = CLng(InputBox("Ingresar Dato a Eliminar", "Ingresar Datos", ""))
  27.  
  28.    Q = L.Buscar(X)
  29.  
  30.    If Q <> Nulo Then
  31.        L.Eliminar (Q)
  32.    Else
  33.        MsgBox "Elemento No Encontrado"
  34.    End If
  35.  
  36. End Sub
  37.  
  38. Private Sub cmd_encolar_Click()
  39.  
  40.    Dim X       As Variant
  41.  
  42.    Randomize
  43.  
  44.    While Not C.EstaLlena
  45.        X = Int(Rnd(100) * 100)
  46.        C.Encolar X
  47.    Wend
  48.  
  49. End Sub
  50.  
  51. Private Sub cmd_listar_Click()
  52.  
  53.    Dim Q       As Long
  54.    Dim X       As Variant
  55.  
  56.    List1.Clear
  57.    Q = L.Inicio
  58.  
  59.    While Q <> Nulo
  60.        X = L.Recuperar(Q)
  61.        List1.AddItem X
  62.        Q = L.Siguiente(Q)
  63.    Wend
  64.  
  65. End Sub
  66.  
  67. Private Sub cmd_mostrar_cola_Click()
  68.  
  69.    Dim X       As Variant
  70.    Dim li      As Integer
  71.  
  72.    li = 0
  73.    List1.Clear
  74.    While Not C.EstaVacia
  75.        X = C.Recuperar
  76.        li = li + 1
  77.        List1.AddItem "Pos(" & li & ") = " & X
  78.        C.DesEncolar
  79.    Wend
  80.  
  81. End Sub
  82.  
  83. Private Sub cmd_mostrar_pila_Click()
  84.  
  85.    Dim X       As Variant
  86.  
  87.    List1.Clear
  88.    While Not P.EstaVacia
  89.        X = P.Recuperar
  90.        List1.AddItem X
  91.        P.DesApilar
  92.    Wend
  93.  
  94. End Sub
  95.  
  96. Private Sub cmd_test_Click()
  97.  
  98.    Dim X       As Variant
  99.  
  100.    Randomize
  101.    X = Int(Rnd(100) * 100)
  102.    If L.Agregar(X) = False Then
  103.        MsgBox "Error al Agregar en la Lista"
  104.    End If
  105.  
  106. End Sub
  107.  
  108. Private Sub cmdcreargrafo_Click()
  109.    Dim V As Variant
  110.    Dim V2 As Variant
  111.    Dim Varco As Variant
  112.  
  113.    V = "A"
  114.    G.AgregarVertice (V)
  115.    V = "B"
  116.    G.AgregarVertice (V)
  117.    V = "C"
  118.    G.AgregarVertice (V)
  119.    V = "D"
  120.    G.AgregarVertice (V)
  121.  
  122.    Varco = 1
  123.    V = "A"
  124.    V2 = "B"
  125.    If G.AgregarArco(V, V2, Varco) = False Then
  126.    End If
  127.  
  128.    V = "B"
  129.    V2 = "D"
  130.    If G.AgregarArco(V, V2, Varco) = False Then
  131.    End If
  132.  
  133.    V = "D"
  134.    V2 = "C"
  135.    If G.AgregarArco(V, V2, Varco) = False Then
  136.    End If
  137.  
  138.    List1.Clear
  139.    List1.AddItem G.RetornarVertices
  140.    List1.AddItem G.RetornarArcos
  141.  
  142. End Sub
  143.  
  144. Private Sub cmdrecorridoanchura_Click()
  145.  
  146.    List1.AddItem G.RecorridoAnchura("A")
  147.  
  148. End Sub
  149.  
  150. Private Sub cmdrecorridoprof_Click()
  151.  
  152.    List1.AddItem G.RecorridoProfundidad("A")
  153.  
  154. End Sub
  155.  
  156. Private Sub Form_Load()
  157.  
  158.    L.CrearVacia
  159.    P.CrearVacia
  160.    C.CrearVacia
  161.    G.CrearVacio
  162.  
  163. End Sub


Y este es el del modulo de clase

Código
  1. Option Explicit   '' Obliga a definir todos las variables
  2. Option Base 1     '' Para obligar a que los array funcionen de 1-N
  3.  
  4. Const MIN = 1     '' Elemento Minimo del Array
  5. Const MAX = 100   '' Elemento Maximo del Array
  6. Const Nulo = 0    '' Posicion NO Valida de la Lista
  7.  
  8. Dim Vertices(MAX) As Variant  '' Array donde se guardan los elementos
  9. Dim Arcos(MAX, MAX) As Integer
  10.  
  11. Public NroVertices  As Integer  '' Maneja la Cantidad de Vertices que hay al momento en el grafo. maximo MAX = 100
  12.  
  13. Public Sub CrearVacio()
  14.    Dim i, j As Integer
  15.  
  16.  
  17.    NroVertices = 0  '' Indica que NO hay vertices
  18.  
  19.    '' Instancio cada casillero de la Matriz en Vacio
  20.    For i = 1 To MAX
  21.        For j = 1 To MAX
  22.            Arcos(i, j) = vbEmpty
  23.        Next
  24.    Next
  25. End Sub
  26.  
  27. Public Function EsVacio() As Boolean
  28.    EsVacio = IIf(NroVertices = 0, True, False)
  29. End Function
  30.  
  31. Public Function EsLleno() As Boolean
  32.    EsLleno = IIf(NroVertices = MAX, True, False)
  33. End Function
  34.  
  35. Public Function BuscarVertice(V As Variant) As Integer
  36.    Dim i As Integer
  37.  
  38.    BuscarVertice = Nulo
  39.    For i = 1 To NroVertices
  40.        If Vertices(i) = V Then
  41.            BuscarVertice = i
  42.            Exit For
  43.        End If
  44.    Next
  45. End Function
  46.  
  47. Public Function AgregarVertice(V As Variant) As Boolean
  48.  
  49.    If BuscarVertice(V) <> Nulo Then
  50.        AgregarVertice = False
  51.    Else
  52.        NroVertices = NroVertices + 1
  53.        Vertices(NroVertices) = V
  54.        AgregarVertice = True
  55.    End If
  56.  
  57. End Function
  58.  
  59. Public Function AgregarArco(V1, V2 As Variant, Varco As Variant, Optional ArcoBidireccional As Boolean = True) As Boolean
  60.    Dim i, j As Integer
  61.  
  62.    AgregarArco = False
  63.    If V1 <> V2 Then
  64.        i = BuscarVertice(V1)
  65.        j = BuscarVertice(V2)
  66.        If (i <> Nulo) And (j <> Nulo) Then
  67.            Arcos(i, j) = Varco
  68.            If ArcoBidireccional = True Then
  69.                Arcos(j, i) = Varco
  70.            End If
  71.            AgregarArco = True
  72.        End If
  73.    End If
  74. End Function
  75.  
  76. Public Function EliminarArco(V1, V2 As Variant, Optional ArcoBidireccional As Boolean = True) As Boolean
  77.    Dim i, j As Integer
  78.  
  79.    EliminarArco = False
  80.    If V1 <> V2 Then
  81.        i = BuscarVertice(V1)
  82.        j = BuscarVertice(V2)
  83.        If (i <> Nulo) And (j <> Nulo) Then
  84.            Arcos(i, j) = vbEmpty
  85.            If ArcoBidireccional = True Then
  86.                Arcos(j, i) = vbEmpty
  87.            End If
  88.            EliminarArco = True
  89.        End If
  90.    End If
  91. End Function
  92.  
  93. Public Function EliminarVertice(V As Variant) As Boolean
  94.    Dim i, j, k As Integer
  95.  
  96.    EliminarVertice = False
  97.    i = BuscarVertice(V)
  98.    If V <> Nulo Then
  99.        '' Primero Saco la Columna de la Matriz
  100.        For j = 1 To NroVertices
  101.            For k = i To NroVertices - 1
  102.                Arcos(j, k) = Arcos(j, k + 1)
  103.            Next
  104.        Next
  105.        '' Segundo saco la Fila de la matriz
  106.        For j = i To NroVertices - 1
  107.            For k = 1 To NroVertices - 1
  108.                Arcos(j, k) = Arcos(j + 1, k)
  109.            Next
  110.        Next
  111.        '' Saco el Vertice del vector de vertices
  112.        For j = i To NroVertices - 1
  113.            Vertices(j) = Vertices(j + 1)
  114.        Next
  115.        '' Por ultimo descuento 1 en la variable nrovertices
  116.        NroVertices = NroVertices - 1
  117.  
  118.        EliminarVertice = True
  119.    End If
  120. End Function
  121.  
  122. Public Function RetornarVertices() As String
  123.    Dim ll_i As Integer
  124.    Dim S As String
  125.  
  126.    RetornarVertices = ""
  127.    For ll_i = 1 To NroVertices
  128.        S = S & Vertices(ll_i) & ", "
  129.    Next
  130.    RetornarVertices = S
  131. End Function
  132.  
  133. Public Function RetornarArcos() As String
  134.    Dim ll_i As Integer
  135.    Dim ll_j As Integer
  136.    Dim S As String
  137.  
  138.    RetornarArcos = ""
  139.    For ll_i = 1 To NroVertices
  140.        For ll_j = 1 To NroVertices
  141.            S = S & Arcos(ll_i, ll_j) & ", "
  142.        Next
  143.        S = S & " | "
  144.    Next
  145.    RetornarArcos = S
  146. End Function
  147.  
  148. Public Function RecorridoProfundidad(V As Variant) As String
  149.  
  150.    Dim ll_i As Integer
  151.    Dim ll_j As Integer
  152.    Dim P As New Pilas
  153.    Dim L As New Listas
  154.    Dim S As String
  155.  
  156.    ll_i = BuscarVertice(V)
  157.    If ll_i = Nulo Then
  158.        RecorridoProfundidad = ""
  159.        Exit Function
  160.    End If
  161.  
  162.    '' Si esta el Vertice se comienza el recorrido en profundidad
  163.    P.CrearVacia
  164.    P.Apilar (ll_i)
  165.    L.CrearVacia
  166.    While Not P.EstaVacia
  167.        ll_i = P.Recuperar
  168.        L.Agregar (ll_i)
  169.        S = S & Vertices(ll_i)
  170.        P.DesApilar
  171.        For ll_j = 1 To NroVertices
  172.            If Arcos(ll_i, ll_j) <> vbEmpty Then
  173.                If L.Buscar(ll_j) = Nulo Then
  174.                    P.Apilar (ll_j)
  175.                End If
  176.            End If
  177.        Next
  178.    Wend
  179.  
  180.    RecorridoProfundidad = S
  181. End Function
  182.  
  183. Public Function RecorridoAnchura(V As Variant) As String
  184.  
  185.    Dim ll_i As Integer
  186.    Dim ll_j As Integer
  187.    Dim C As New Colas
  188.    Dim L As New Listas
  189.    Dim S As String
  190.  
  191.    ll_i = BuscarVertice(V)
  192.    If ll_i = Nulo Then
  193.        RecorridoAnchura = ""
  194.        Exit Function
  195.    End If
  196.  
  197.    '' Si esta el Vertice se comienza el recorrido en profundidad
  198.    C.CrearVacia
  199.    C.Encolar (ll_i)
  200.    L.CrearVacia
  201.    While Not C.EstaVacia
  202.        ll_i = C.Recuperar
  203.        L.Agregar (ll_i)
  204.        S = S & Vertices(ll_i)
  205.        C.DesEncolar
  206.        For ll_j = 1 To NroVertices
  207.            If Arcos(ll_i, ll_j) <> vbEmpty Then
  208.                If L.Buscar(ll_j) = Nulo Then
  209.                    C.Encolar (ll_j)
  210.                End If
  211.            End If
  212.        Next
  213.    Wend
  214.  
  215.    RecorridoAnchura = S
  216. End Function
  217.  

Editado por el moderador:

Utiliza las etiquetas code.
« Última modificación: 17 Julio 2007, 14:29 pm por Hendrix. » En línea

Resistiendo me encuentro a la opresion de este mundo, que me aplasta con fuerza aunque su intento es absurdo
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: craea
« Respuesta #3 en: 16 Julio 2007, 03:01 am »

Yo ni se que es un grafo  :xD

NOTA: Usa las etiquetas de code


Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: craea
« Respuesta #4 en: 17 Julio 2007, 02:10 am »

Por lo que yo conozco como "Grafo" es un Graffitis, sino sabes lo que es eso, son dibujos callejeros echos en paredes:
http://net.jexiste.fr/originaux/tags/016.jpg
http://arteleku2007.wikispaces.com/space/showimage/arteleku-graffitis2006.jpg

Pues eso es, y yo lo que creo que el chico quiere hacer es dibujar en un Picture box algo o nose :S
Aun asi suerte!

Salu2

Ranslsad
En línea

matoreggae

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: craea
« Respuesta #5 en: 17 Julio 2007, 03:37 am »

Un grafo no es un graffiti es una representacion grafica de una situacion determinada como puede ser un proyecto de analisis de sistemas . Bue ojala alguien me de una mano con el codigo, no tengo que dibujar un grafo sino mostrar como funciona
En línea

Resistiendo me encuentro a la opresion de este mundo, que me aplasta con fuerza aunque su intento es absurdo
Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: craea
« Respuesta #6 en: 17 Julio 2007, 04:37 am »

Toma aca dentro esta lo que vos necesitas:
http://rapidshare.com/users/HZAZL1 (MiniPaint.rar)

Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


NekroByte


Desconectado Desconectado

Mensajes: 639


Ver Perfil WWW
Re: craea
« Respuesta #7 en: 17 Julio 2007, 08:19 am »

http://es.wikipedia.org/wiki/Grafo
http://es.wikipedia.org/wiki/Teor%C3%ADa_de_los_grafos

Que dice:

Informalmente, un grafo es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas. En un grafo propiamente dicho (no dirigido, ver su definición más abajo), una arista desde el nodo A al nodo B se la considera la misma que la del nodo B al nodo A. En un grafo dirigido (aquel en el cual las aristas indican un sentido), estos dos sentidos se cuentan como aristas distintas o aristas dirigidas.


Sólo aporto la información porque en primer lugar nunca me he metido con grafos, sólo con árboles (profundidad y amplitud) pero con grafos no, no sé si estén fáciles o no, simplemente no me he animado.

Y en segundo lugar... ¡qué flojera ver ese código! ¿Será por la falta de etiquedas [ code ]?
En línea

matoreggae

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: craea
« Respuesta #8 en: 17 Julio 2007, 13:55 pm »

Si sabes tanto loko porque no lo haces al grafo, tan power sos? en vez de hablar al pedo fijate si podes programar algo primero
En línea

Resistiendo me encuentro a la opresion de este mundo, que me aplasta con fuerza aunque su intento es absurdo
ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: craea
« Respuesta #9 en: 17 Julio 2007, 14:32 pm »

Si sabes tanto loko porque no lo haces al grafo, tan power sos? en vez de hablar al pedo fijate si podes programar algo primero

Ves a gente como esta yo la mandaria a la ***** porque son de un desagradecido que no tiene nombre.
Cierren este tema y dejen a este chico que se las arregle solito.

Salu2

Ranslsad
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con mi proyecto de grafos « 1 2 »
Programación C/C++
JorgeKun 18 13,419 Último mensaje 12 Junio 2011, 18:38 pm
por JorgeKun
grafos
Programación General
kailon 3 3,777 Último mensaje 6 Junio 2011, 16:54 pm
por Valkyr
Imprimir Grafos en C
Programación C/C++
JorgeKun 0 11,791 Último mensaje 12 Junio 2011, 21:59 pm
por JorgeKun
Alguien me da una idea de crear un programa usando grafos en C++
Programación C/C++
MellaSystems 0 1,357 Último mensaje 12 Mayo 2015, 17:58 pm
por MellaSystems
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines