You are on page 1of 2

MALDITO CUADRADO MAGICO

PROGRAMACION

El cuadrado mágico, es uno de esos ejercicios que siempre vienen cuando se estudia
programación; como cuando haces algoritmos para imprimir los 10 primeros números pares,
impares o primos; todos lo que hemos estudiado programación hacemos el factorial de un
numero o fibonacci de otro; bueno cosas como esas.

Les cuento algo yo tenia examen de TECNICAS DE PROGRAMACION, y como la verdad


estaba un poco mal en este curso, conseguí el examen de años anteriores, donde vi que
pregunto el famoso cuadrado mágico.

Un cuadrado mágico , es aquel cuya fila ,columnas y diagonales suman los mismo, a esto se
le llama constante mágica.

Aquí esta mi solución (bueno no fue algo así como, que bruto, que solucion que hicistes, pero
ahí le doy…), solo se que lo hice en todo un día y medio, es bonito cuando algo te va
saliendo, tu mente te va dando soluciones de poco a poco.

Falta perfeccionarlo pero que diablos la cosa es que salio…

Aquí esta el código, lo hice en Visual Basic Express 2005 (APLICACIÓN CONSOLA)…

Module Module1

Sub Main()
'declaracion de variables
Dim m, n, f, c, nromov, i, liming As Integer

'establece el tamaño de la matrix


Console.WriteLine("Por favor coloque el tamaño de la matriz: ")
n = Console.ReadLine()
n = (n - 1)
Dim matriz(n, n) As Integer

'detalle de movimiento
liming = ((n + 1) * (n + 1)) + 1
f = 0
c = Int((n + 1) / 2)
nromov = n
'la primera piedra
matriz(f, c) = 1
i = 2
For k = 0 To n
For j = 1 To nromov
f = f - 1
c = c + 1
If (f = -1) Then f = n
If (c = n + 1) Then c = 0
matriz(f, c) = i
i = i + 1
Next
If (i = liming) Then Exit For
f = f + 1
matriz(f, c) = i
i = i + 1
Next

'grafica la matriz
Console.WriteLine("Aprete cualquier tela para graficar la matriz...")
Console.ReadLine()
For k = 0 To n
For l = 0 To n
If matriz(k, l) < 10 Then
Console.Write("[ ")
Else
Console.Write("[")
End If
Console.Write("{0}{1}", matriz(k, l), "] ")
Next
Console.WriteLine()
Console.WriteLine()
Next

'salida
Console.WriteLine("Presione cualquier tecla para salir...")
Console.ReadLine()
End Sub

End Module

Aquí funcionando……