Translate

martes, 3 de diciembre de 2013

Matrices:Cuadro mágico en Visual Basic 2010



Una de las aplicaciones que se le puede dar a una matriz es en la implementación de un cuadro mágico, el cual de acuerdo a un algoritmo llena sus casillas, esto con la ayuda de un vector, el propósito del cuadro es que cuando se sumen los lados el resultado debe de dar 15 en todos sus lados. Es importante mencionar que  algoritmo empleado para la r4ealizacion del cuadro mágico solo es aplicable para números impares.

En este ejemplo de empleará un cuadro de 3 x3.
El algoritmo trata de colocar los números de la siguiente forma.
·         Colocar el primer número en cualquier casilla.

·         A partir de ese aplicar la siguiente condición “arriba derecha”, y se coloca el siguiente número.
·         Si esa casilla está ocupada de aplica “arriba izquierda”.

Para realizar esta aplicación, primero es necesario crear una interfaz, que contendrá  lo siguiente:
·         1 DataGridView(con  nomenclatura dgvcuadro).
·         3 Botones
Como la siguiente:
















Para poder realizar el procedimiento es necesario declarar 2 variables.
Dim filas As Integer 'variable para las filas
    Dim columnas As Integer ' variable para las columnas







Para determinar las propiedades del DataGridView se da doble clic al formulario y se coloca el siguiente código:
dgvCuadro.RowCount = 3 'Indica la cantidad de filas
        dgvCuadro.ColumnCount = 3 'Indica la cantidad de columnas

        dgvCuadro.Columns(0).Width = 60 ' indica el tamaño de las columnas
        dgvCuadro.Columns(1).Width = 60 ' indica el tamaño de las columnas
        dgvCuadro.Columns(2).Width = 60 ' indica el tamaño de las columnas








Para poder aplicar las condiciones de “arriba derecha” y “arriba izquierda”, es necesario crear 3 funciones, que se presentan a continuación.
Private Sub Arriba()
        filas = filas - 1

        If filas < 0 Then
            filas = 2
        End If
    End Sub
    Private Sub derecha()
        columnas = columnas + 1
        If columnas > 2 Then
            columnas = 0
        End If
    End Sub

    Private Sub izquierda()
        columnas = columnas - 1
        If columnas < 0 Then
            columnas = 2
        End If
    End Sub




















Para poder validar en donde se coloca el primer número, es necesario cambiar el evento del datagridview a CellEndEdit e ingresar el siguiente código.

filas = dgvCuadro.CurrentCellAddress.Y
        columnas = dgvCuadro.CurrentCellAddress.X



Después de haber realizado esto, colocar el siguiente código en el botón terminar.
For i As Integer = (2) To (9) 'ciclo para realizar la inserción de los números

            Arriba() 'indica que debe ir hacia arriba
            derecha() 'indica que debe ir hacia la derecha
            If dgvCuadro.Item(columnas, filas).Value <> Nothing Then 'valida si la fila y columna esta vacia
                Arriba() ' indica que debe ir hacia arriba y a la izquierda
                izquierda()

            End If
            dgvCuadro.Item(columnas, filas).Value = i
        Next









Para limpiar los datos del datagridview aplicarlo siguiente, en el botón limpiar.
dgvCuadro.Rows.Clear() 'limpia el datagridview


        dgvCuadro.RowCount = 3 'Indica la cantidad de filas
        dgvCuadro.ColumnCount = 3 'Indica la cantidad de columnas

        dgvCuadro.Columns(0).Width = 60 ' indica el tamaño de las columnas
        dgvCuadro.Columns(1).Width = 60 ' indica el tamaño de las columnas
        dgvCuadro.Columns(2).Width = 60 ' indica el tamaño de las columnas









 Y finalmente para el botón salir.






2 comentarios: