Sunteți pe pagina 1din 30

UNIVERSIDAD CENTRAL DEL ECUADOR

INGENIERA MATEMTICA
PROGRAMACIN I

PROYECTO:
MATRIZ MGICA

INTEGRANTES:

GREDA STEFANY

BRAVO KEVIN

CHICAIZA NATHALY

CHUQUILLA DARO

QUITO, 08 DE JULIO DEL 2015

Matriz Mgica

NDICE
NDICE ........................................................................................................................................................ 2
TABLA DE ILUSTRACIONES ................................................................................................................ 2
RESUMEN .................................................................................................................................................. 3
CAPTULO I ............................................................................................................................................... 4
EL PROBLEMA ..................................................................................................................................... 4
PLANTEAMIENTO DEL PROBLEMA.......................................................................................... 4
OBJETIVOS ........................................................................................................................................ 5
JUSTIFICACIN ............................................................................................................................... 6
CAPTULO II ............................................................................................................................................. 7
MARCO TERICO ............................................................................................................................... 7
MATRIZ .............................................................................................................................................. 7
CDIGO EN VISUAL BASIC: ........................................................................................................... 14
CDIGO EN C: .................................................................................................................................... 19
CDIGO JAVA: ................................................................................................................................... 24
RECOMENDACIONES........................................................................................................................... 29
BIBLIOGRAFA....................................................................................................................................... 30

TABLA DE ILUSTRACIONES

ILUSTRACIN 1: MATRIZ .............................................................................................................. 7


ILUSTRACIN 2: MATRIZ MONTOS ............................................................................................... 9
ILUSTRACIN 3 MATRIZ MGICA ................................................................................................ 10
ILUSTRACIN 4: ARREGLO DE DATOS......................................................................................... 10
ILUSTRACIN 5: ENTRADAS Y SALIDAS DEL ALGORITMO .......................................................... 11

Matriz Mgica

RESUMEN

Todas las personas debemos conocer el concepto de una matriz para poder organizar nuestra
informacin, pero para ello debe generarse la intencin de aprender. En programacin se busca
tratar de mejorar y facilitar procesos de nuestra vida cotidiana como lo es problemas de
razonamientos matemticos, por lo cual en nuestro trabajo se presentar un algoritmo que nos
ayude a realizar procesos matemticos los mismos que indicarn si una matriz que ingresamos es
mgica o no mediante la verificacin de la suma de sus filas y columnas pero siempre teniendo en
cuenta que una matriz mgica es una matriz cuadrada.

Matriz Mgica

CAPTULO I
EL PROBLEMA

PLANTEAMIENTO DEL PROBLEMA

La resolucin de problemas matemticos como lo es de una matriz en el mbito acadmico


es de mucha importancia la cual se origina al querer tener datos ms ordenados en filas y columnas
para que la presentacin de la informacin sea ms clara, entendible y esttica, a medida que el
conocimiento va avanzando no solo se la utiliza en matemtica sino que tambin en diversas reas
derivadas de ella por la cual en la actualidad todo ser humano conoce el concepto de lo que es una
matriz.
La utilizacin de matrices constituye actualmente una parte esencial en los lenguajes de
programacin, ya que la mayora de los datos se introducen en los ordenadores como tablas
organizadas en filas y columnas: hojas de clculo, bases de datos, etc. Tambin son utilizadas para
resolver problemas matemticos, por ejemplo en la resolucin de sistemas de ecuaciones lineales,
de las ecuaciones diferenciales y de las derivadas parciales.
Con el estudio de lo que es un matriz se podr resolver una matriz realizada con bases de
los conceptos que se van estudiar en la cual tambin se verificar si es mgica (Una matriz mgica
es una matriz cuadrada (tiene igual nmero de filas que de columnas) que tiene como propiedad
especial que la suma de las filas, las columnas y las diagonales es igual) o no lo es; mediante la
suma de sus filas, columnas y diagonales la misma que permitir que los usuarios que la utilicen
se den cuenta la diferencia entre las dos matrices que podrn generar.
El concepto de matrices ha ayudado a ordenar y resolver diversos problemas de la vida real
por lo que su estudio es de gran importancia siendo esta la que ayudar en el presente proyecto a
resolver el objetivo propuesto.
Con la ayuda de un algoritmo se podr generar la solucin de la matriz mgica el mismo
que ser realizado en tres diferentes lenguajes de programacin los cuales son Visual Basic, C++
y Java, estos lenguajes presentarn un mismo algoritmo pero con caractersticas diferentes en sus
lenguajes de cdigos e interpretacin de los mismos.
4

Matriz Mgica

OBJETIVOS

Objetivo General:

Aprender y analizar el concepto de matrices en programacin para realizar algoritmos


con las mismas que permitan dar solucin a varios problemas, entre ellas la respuesta de
una matriz mgica.

Objetivos Especficos:
Conocer que es una matriz.
Representar conjuntos de datos mediante matrices.
Solucionar problemas utilizando matrices.

Matriz Mgica

JUSTIFICACIN

El presente trabajo realizado por el grupo DSKN es de gran importancia ya que con este se
pretende dar solucin a diversos problemas cotidianos mediante la utilizacin bsica de conceptos
de matrices.
Los aspectos novedosos a investigarse en el presente trabajo es como realizar sumas de
filas, columnas y diagonales dentro de una matriz para con ello poder determinar si la matriz que
propone el usuario va a ser mgica o no.
Al ser este una investigacin interesante y distractora tendr gran acogida puesto que es
fcil de utilizarla solo se necesita la imaginacin y habilidad del usuario para digitar los nmeros
y as poder comprobar si lo que intenta hacer corresponde a la matriz mgica, una matriz de igual
nmero de filas y columnas cabe recalcar.
El uso ms importante de las matrices es para resolver ecuaciones lineales de muchas
variables en forma sistemtica y compacta. (Esto incluye problemas de fsica de muchos cuerpos
y cualquier aproximacin lineal de un problema no lineal).
Tambin se pueden crear las llamadas "matrices de transicin" que son matrices que
describen procesos de transicin de estados cunticos.

Matriz Mgica

CAPTULO II
MARCO TERICO

MATRIZ

(CALDAS, s.f.) Una matriz es una estructura de datos, o ms tcnicamente, un espacio de memoria
que permite almacenar una coleccin de elementos, todos del mismo tipo. La diferencia con los
arreglos est en que, en las matrices, los elementos no estn organizados linealmente sino que su
organizacin es bidimensional, es decir, en filas y columnas. Conviene imaginar una matriz como
una organizacin de celdas de memoria, o casillas, en cada una de las cuales se puede guardar un
elemento de la coleccin. Adems, es usual dibujarla como lo ilustra la figura siguiente:

Ilustracin 1: Matriz
Esta figura representa un matriz de cuatro filas (numeradas verticalmente de 0 a 3) y seis columnas
(numeradas horizontalmente de 0 a 5). En cada una de las 24 celdas o casillas se puede guardar un
dato. La dimensin o tamao de una matriz es el nmero filas por el nmero de columnas. Debe
ser claro entonces que la figura anterior es la grfica de una matriz de dimensin 4x6.
La numeracin de las filas y las columnas determina que cada una de las casillas de una matriz
tiene asociados dos nmeros que la identifican de manera nica. A estos nmeros se les llama
Matrices 3 ndice de fila e ndice de columna, respectivamente. En el seudocdigo, y tambin en
C y C++, las filas y las columnas se numeran desde 0.
Los lenguajes como C y C++, permiten que el programador declare matrices de cualquier tipo y
prcticamente de cualquier tamao. En el seudocdigo, un matriz se declara usando el siguiente
formato:

En este formato aparecen en maysculas y entre los caracteres < y > los componentes que el
programador puede determinar. As por ejemplo, si se quiere declarar una matriz con
7

Matriz Mgica

nombre mat, de dimensin 15x4 y que pueda almacenar datos de tipo caracter, se debe escribir la
siguiente lnea.

Segn el formato anterior, el programador debe bautizar la matriz (ponerle un nombre


significativo), debe decir cul es su dimensin, y tambin debe decir de qu tipo son los elementos
que almacenar.
Enseguida se dan algunos ejemplos de declaraciones de matrices.

Si se necesita guardar la informacin relacionada con el tablero de un juego de tic tac toe
(el tradicional triqui), se puede declarar la siguiente matriz:

tablero : matriz [3][3] de caracter

Si se requiere guardar las notas que han sacado 35 estudiantes en los 5 talleres y en los 5
laboratorios del curso de Programacin de Computadores se pueden declarar las
siguientes matrices.
talleres : matriz [35][5] de real
laboratorios : matriz [35][5] de real

Note que, en ambas matrices, cada fila guarda las notas de un estudiante del curso.

Si se quiere guardar las letras que conforman una sopa de letras, como aquellas que vienen
en los pasatiempos, se puede declarar la siguiente matriz.
sopa : matriz [10][15] de carcter

Note que la sopa de letras ms grande que se puede guardar es de 10 filas por 15 columnas. Los
ndices se crearon para permitir que el programador se pueda referir, de forma especfica y directa,
a una cualquiera de las casillas de la matriz, tanto para guardar un dato en esa casilla, como para
obtener el dato almacenado en ella. En el seudocdigo, para referirse a una casilla particular de
una matriz se debe seguir el siguiente formato:

Es decir, se debe escribir el nombre de la matriz seguido por el ndice de fila y por el ndice de
columna, ambos entre parntesis cuadrados, de la casilla que se quiere consultar.
Para los siguientes ejemplos, suponga que se declara la matriz montos, de la siguiente manera:
montos : matriz [6][10] de real

Matriz Mgica

La siguiente instruccin asigna o guarda el nmero 10,4 en la casilla de la esquina superior


izquierda de esta matriz:
montos [0][0]:= 10,4

La siguiente instruccin iterativa guarda 5,5 en cada una de las casillas de la ltima fila de
esta matriz:
k:=0
MIENTRAS (k<10) HACER
montos[5][k]:= 5,5
k:=k+1
FINMIENTRAS

La siguiente figura muestra la matriz montos despus de ejecutadas las instrucciones de los dos
ejemplos anteriores. Las casillas vacas no tienen valores definidos.

Ilustracin 2: Matriz montos


(Microsoft, s.f.) Una matriz tiene las propiedades siguientes:

Una matriz puede ser unidimensional, multidimensional o escalonada.


El nmero de dimensiones y la longitud de cada dimensin se establecen cuando se crea la
instancia de la matriz. Estos valores no se pueden cambiar durante la duracin de la
instancia.
Los valores predeterminado de los elementos numricos de matriz se establece en cero y
el de los elementos de referencia se establece en null.
Una matriz escalonada es una matriz de matrices y por consiguiente sus elementos son
tipos de referencia y se inicializan en null.
Las matrices se indizan basadas en cero: una matriz con n elementos se indiza
desde 0 hasta n-1.
Los elementos de una matriz pueden ser de cualquier tipo, incluido el tipo matriz.

Matriz Mgica

MATRIZ MGICA

(Matriz mgica, s.f.) Una matriz mgica es una matriz cuadrada (tiene igual nmero de filas que
de columnas) que tiene como propiedad especial que la suma de las filas, las columnas y las
diagonales es igual. Por ejemplo:

Ilustracin 3 Matriz mgica


En esta matriz las sumas son 15.
Considere el problema de construir un algoritmo que compruebe si una matriz de datos enteros es
mgica o no, y en caso de que sea mgica escribir la suma. El usuario ingresa el tamao de la
matriz mximo hasta 10. Adems debe guardar la suma de las filas, las columnas y las diagonales
en un arreglo en el orden siguiente:

Ilustracin 4: Arreglo de datos

Las entradas (datos conocidos) para el algoritmo son:


La dimensin de la matriz
Los nmeros que contiene la matriz
La salida esperada (datos desconocidos) es:
La matriz es mgica o no, y si es mgica cul es el valor de la suma.
En este problema, los arreglos son tiles para guardar los datos que conforman la matriz. Los
nmeros que contiene la matriz se pueden guardar en una variable entera. La siguiente grfica
resume las entradas y salidas del algoritmo que se pretende disear. Adems bautizan todas las
variables mencionadas.

10

Matriz Mgica

Ilustracin 5: Entradas y Salidas del Algoritmo


Las condiciones iniciales y finales se pueden expresar mediante las clusulas REQUIERE y
GARANTIZA:
REQUIERE: La dimensin de la matriz que debe ser mximo 10x10 Cada elemento de la matriz
debe ser un nmero entero
GARANTIZA Muestra en pantalla si es mgica o no, y si lo es cul es el valor de la suma.
ALGORITMO EN PSEUDOCDIGO
Una primera versin del algoritmo puede ser la siguiente:
Inicio
Paso 1. Leer el tamao de la matriz
Paso 2. Leer los elementos de la matriz
Paso 3. Determinar si la matriz es mgica o no
Paso 4. Si la matriz es mgica mostrar el valor de la suma
Fin
Los pasos 1 y 2 son interacciones con el usuario que permiten capturar los datos de entrada. La
versin inicial se puede refinar detallando estos pasos y adems defiendo las variables para
hacerlos:
Procedimiento principal
variables i, j, cont, dimension, suma: entero //i seala las filas
//j seala las columnas
magica: matriz [10][10] de enteros
Inicio
escribir(Por favor digite la dimensin con la que desea trabajar: )
leer(dimension)
para (i=0 hasta dimension-1) hacer
para(j=0 hasta dimension -1) hacer
11

Matriz Mgica

escribir(Por favor digite el dato en la posicin)


escribir(i, j)
leer(magica[i][j])
fin_para
fin_para
Paso 3
Paso 4
Se puede observar que el primer ciclo para tiene como contador la variable i, esto indica que se
llenar la matriz por filas, el segundo ciclo para que tiene como contador la variable j, recorrer la
fila columna a columna para ubicar all el dato correspondiente. La parte nuclear de la solucin es
el paso 3. En este problema en particular se sabe que el nmero de filas y de columnas es igual y
que hay dos diagonales. Para el ejemplo mostrado al inicio sera 3 filas, 3 columnas y dos
diagonales. Para almacenar las sumas en un arreglo este tendr una dimensin de 2*tam+2. La
declaracin del arreglo sumas es: sumas: arreglo [22] de enteros Ahora para calcular las sumas se
puede hacer lo siguiente: Paso 3.1: Inicializar el arreglo de sumas en cero Paso 3.2: Sumar fila por
fila, columna por columna y las diagonales y guardar su valor en el arreglo.
para(i=0 hasta 2*dimension+2) hacer
sumas[i]:=0
fin_para
//Sumas correspondientes a las filas
para(i=0 hasta dimension -1) hacer
para(j=0 hasta dimension -1) hacer
sumas[i] =magica[i][j] +sumas[i]
fin_para
fin_para
//Sumas correspondientes a las columnas
para(j=0 hasta dimension -1) hacer
para(i=0 hasta dimension -1) hacer
sumas[j+ dimension]=magica[i][j]+sumas[j+ dimension]
fin_para
fin_para
//Sumas correspondientes a las diagonales
para(i=0 hasta dimension -1) hacer
sumas[2* dimension]=magica[i][i]+sumas[2* dimension]
fin_para
para(i=0 hasta dimension -1) hacer
sumas[2* dimension +1]=magica[i][( dimension -1)-i]+sumas[2* dimension +1];
fin_para
Paso 4: Para determinar si la matriz es mgica se va a recorrer y comparar el vector sumas, si en
algn momento se encuentra un valor diferente se muestra en pantalla que la matriz no es mgica
y se lleva el contador i ms all del final del arreglo, si por el contrario se llega al final del arreglo,
12

Matriz Mgica

es decir que todo este contiene el mismo valor y la matriz si cumple con las caractersticas
evaluadas, se muestra en pantalla que la matriz es mgica.
//Comparar el vector suma y muestra el resultado
int con=0;
con=sumas[0];
para(i=1 hasta 2* dimension +1) hacer
si(con<>sumas[i])
escribir("la matriz no es mgica)
i=2* dimension +3;
fin_si
fin-para
si(i=2* dimension +2)
escribir(la matriz es mgica y la suma es:)
escribir(con);
fin_si
El algoritmo completo se presenta enseguida.
Procedimiento principal
variables
i, j, aux, dimension, suma: entero //i seala las filas
//j seala las columnas
con=0: entero
magica: matriz [10][10] de enteros
sumas: arreglo [22] de enteros
Inicio
escribir(Por favor digite la dimensin con la que desea trabajar: )
leer(dimension)
para (i=0 hasta dimension -1) hacer
para(j=0 hasta dimension -1) hacer
escribir(Por favor digite el dato en la posicin)
escribir(i,j)
leer(magica[i][j])
fin_para
fin_para
para(i=0 hasta 2* dimension +2) hacer
sumas[i]:=0
fin_para
//Sumas correspondientes a las filas
para(i=0 hasta dimension -1) hacer
para(j=0 hasta dimension -1) hacer
sumas[i]=magica[i][j]+sumas[i]
13

Matriz Mgica

fin_para
fin_para
//Sumas correspondientes a las columnas
para(j=0 hasta dimension -1) hacer
para(i=0 hasta dimension -1) hacer
sumas[j+ dimension]=magica[i][j]+sumas[j+ dimension]
fin_para
fin_para
//Sumas correspondientes a las diagonales
para(i=0 hasta dimension -1) hacer
sumas[2* dimension]=magica[i][i]+sumas[2* dimension]
fin_para
para(i=0 hasta dimension -1) hacer
sumas[2* dimension +1]=magica[i][( dimension -1)-i]+sumas[2* dimension +1];
fin_para
con=sumas[0];
para(i=1 hasta 2* dimension +1) hacer
si(con<>sumas[i])
escribir("la matriz no es mgica)
i=2* dimension +3;
fin_si
fin-para
si(i=2* dimension +2)
escribir(la matriz es mgica y la suma es:)
escribir(con);
fin_si
fin-procedimiento
CDIGO EN VISUAL BASIC:
1. Definiremos las variables q vamos a necesitar:
Dim i As Integer
Dim j As Integer
Dim aux As Integer
Dim dimension As Integer
Dim cont As Integer
Dim Matriz(10, 10) As Integer
Dim suma(300) As Integer
2. Desplegaremos el siguiente mensaje:
dimension = InputBox("Porfavor ingrese la dimension de la matriz con la que desea trabajar ")
3. Ciclo para generar la matriz:
14

Matriz Mgica

For i = 0 To dimension - 1
For j = 0 To dimension - 1
Matriz(i, j) = InputBox("Digite los elementos de la matriz en la posicion: " & i & "." & j)
Next j
Next i
4. Impresin de datos:
Worksheets("Hoja1").Cells(1, 2).Value = ("PROYECTO DE MATRIZ MGICA ")
Worksheets("Hoja1").Cells(3, 2).Value = ("La matriz es: ")
Cells(3, 2).Interior.ColorIndex = 39
Cells(3, 2).BorderAround (xlContinuous)
Cells(3, 2).BorderAround (xlHairline)
For i = 0 To dimension - 1
For j = 0 To dimension - 1
Worksheets("Hoja1").Cells(4 + i, 2 + j).Value = (Matriz(i, j))
Cells(4 + i, 2 + j).Interior.ColorIndex = 40
Cells(4 + i, 2 + j).BorderAround (xlContinuous)
Cells(4 + i, 2 + j).BorderAround (xlHairline)
Next j
Next i
5. Suma filas:
For i = 0 To 2 * dimension + 2
suma(i) = 0
Next i
'Suma Filas
Worksheets("Hoja1").Cells(9, 1).Value = ("La suma de sus filas es: ")
Cells(9, 1).Interior.ColorIndex = 43
Cells(9, 1).BorderAround (xlContinuous)
Cells(9, 1).BorderAround (xlHairline)
For i = 0 To dimension - 1
Worksheets("Hoja1").Cells(10 + i, 1).Value = ("Suma fila " & i + 1)
Cells(10 + i, 1).Interior.ColorIndex = 44
Cells(10 + i, 1).BorderAround (xlContinuous)
Cells(10 + i, 1).BorderAround (xlHairline)
For j = 0 To dimension - 1
suma(i) = suma(i) + Matriz(i, j)
Worksheets("Hoja1").Cells(10 + i, 2 + j).Value = (suma(i))
Cells(10 + i, 2 + j).Interior.ColorIndex = 45
Cells(10 + i, 2 + j).BorderAround (xlContinuous)
Cells(10 + i, 2 + j).BorderAround (xlHairline)
Next j
15

Matriz Mgica

Next i
6. Suma columnas:
'Suma Columnas
Worksheets("Hoja1").Cells(15, 1).Value = ("La suma de sus columnas es: ")
Cells(15, 1).Interior.ColorIndex = 10
Cells(15, 1).BorderAround (xlContinuous)
Cells(15, 1).BorderAround (xlHairline)
For j = 0 To dimension - 1
For i = 0 To dimension - 1
suma(j + dimension) = suma(j + dimension) + Matriz(i, j)
Worksheets("Hoja1").Cells(16, 1 + j).Value = ("Suma columna " & j + 1)
Cells(16, 1 + j).Interior.ColorIndex = 44
Cells(16, 1 + j).BorderAround (xlContinuous)
Cells(16, 1 + j).BorderAround (xlHairline)
Worksheets("Hoja1").Cells(17 + i, 1 + j).Value = (suma(j + dimension))
Cells(17 + i, 1 + j).Interior.ColorIndex = 45
Cells(17 + i, 1 + j).BorderAround (xlContinuous)
Cells(17 + i, 1 + j).BorderAround (xlHairline)
Next i
Next j
7. Suma diagonales:
'Suma Diagonales
j=0
Worksheets("Hoja1").Cells(21, 1).Value = ("La suma de sus diagonales es: ")
Cells(21, 1).Interior.ColorIndex = 23
Cells(21, 1).BorderAround (xlContinuous)
Cells(21, 1).BorderAround (xlHairline)
For i = 0 To dimension - 1
Worksheets("Hoja1").Cells(22, 1).Value = ("Suma diagonal izq-der ")
Cells(22, 1).Interior.ColorIndex = 46
Cells(22, 1).BorderAround (xlContinuous)
Cells(22, 1).BorderAround (xlHairline)
suma(2 * dimension) = suma(2 * dimension) + Matriz(i, i)
Worksheets("Hoja1").Cells(22 + i, 2 + j).Value = (suma(2 * dimension))
Cells(22 + i, 2 + j).Interior.ColorIndex = 44
Cells(22 + i, 2 + j).BorderAround (xlContinuous)
Cells(22 + i, 2 + j).BorderAround (xlHairline)
j=j+1
Next i
Worksheets("Hoja1").Cells(22, j + 2).Value = ("Suma diagonal der-izq ")
Cells(22, j + 2).Interior.ColorIndex = 22
Cells(22, j + 2).BorderAround (xlContinuous)
Cells(22, j + 2).BorderAround (xlHairline)
16

Matriz Mgica

For i = 0 To dimension - 1
suma(2 * dimension + 1) = suma(2 * dimension + 1) + Matriz(i, (dimension - 1) - i)
Worksheets("Hoja1").Cells(22 + i, 3 + j).Value = (suma(2 * dimension + 1))
Cells(22 + i, 3 + j).Interior.ColorIndex = 44
Cells(22 + i, 3 + j).BorderAround (xlContinuous)
Cells(22 + i, 3 + j).BorderAround (xlHairline)
j=j+1
Next i
8. Verificacin de la matriz:
'Verificar si la matriz es magica
cont = 0
cont = suma(0)
For i = 1 To 2 * dimension + 1
If (cont = suma(i)) Then
Worksheets("Hoja1").Cells(27, 1).Value = ("La matriz es magica y su suma es " & cont)
Cells(27, 1).Interior.ColorIndex = 3
Else
If (cont <> suma(i)) Then
Worksheets("Hoja1").Cells(27, 1).Value = ("La matriz no es magica")
Cells(27, 1).Interior.ColorIndex = 3
End If
End If
Next i
9. Fin del algoritmo:
End Sub
AHORA PROCEDEREMOS A REALIZAR LAS DIFERENTES PRUEBAS Y AS
VERIFICAR LA VALIDEZ DEL ALGORITMO:
*MATRIZ MGICA:
1. Ejecutamos el programa:

2. Escogemos la dimensin con la que trabajaremos: (En este caso=4)

17

Matriz Mgica

3. Digitaremos los valores de nuestra matriz de inicio a fin:

4. Estos son los resultados obtenidos:

*MATRIZ NO MGICA:
Los pasos 1,2 y 3 sern exactamente iguales, lo que cambiar son los resultados obtenidos:
En el paso 3, los nmeros sern distintos ya que verificaremos una matriz no mgica.

4. Resultados:

18

Matriz Mgica

CDIGO EN C:
1. Incluimos las libreras:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"

int _tmain(int argc, _TCHAR* argv[])


{
system("color F0");
2. Definimos las variables:
int i, j, aux, dimension, suma[300], cont;
char matriz[10][10];
printf("Porfavor ingrese la dimension de la matriz con la que desea trabajar ");
//srand(time(NULL)); nicamente se utiliza para generar nmeros aleatorios pero no fue
necesario
scanf_s("%d", &dimension);
3. Ciclo para generar la matriz:
for (i = 0; i < dimension; i++)
{
for (j = 0; j < dimension; j++)
19

Matriz Mgica

{
printf("Digite los elementos de la matriz en la posicion %d %d ", i, j);
scanf_s("%d", &matriz[i][j]);
}
printf("\n\n");
}
for (i = 0; i < dimension; i++)
{
for (j = 0; j < dimension; j++)
{
printf("\t%d", matriz[i][j]);
}
printf("\n\n");
}
printf("\n");
printf("+++++ Suma de matriz filas +++++");
printf("\n");
for (i = 0; i < 2 * dimension + 2; i++)
{
suma[i] = 0;
}
4. Suma filas:
//suma filas
for (i = 0; i < dimension; i++)
{
for (j = 0; j < dimension; j++)
{
suma[i] = suma[i] + matriz[i][j];
printf("\t %d", suma[i]);
}
printf("\n\n");
}
printf("\n");
printf("+++++ Suma de matriz columnas +++++");
printf("\n");
5. Suma columnas:
//suma columnas
for (j = 0; j < dimension; j++)
{
for (i = 0; i < dimension; i++)
{
suma[j + dimension] = suma[j + dimension] + matriz[i][j];
20

Matriz Mgica

printf("\t %d", suma[j + dimension]);


}
printf("\n\n");
}
printf("\n");
printf("+++++ Suma de matriz diagonales +++++");
printf("\n");
6. Suma diagonales:
//suma diagonales
for (i = 0; i < dimension; i++)
{
suma[2 * dimension] = suma[2 * dimension] + matriz[i][i];
printf("\t %d", suma[2 * dimension]);
}
printf("\n\n");
printf("\n");
for (i = 0; i < dimension; i++)
{
suma[2 * dimension + 1] = suma[2 * dimension + 1] + matriz[i][(dimension - 1) i];
printf("\t %d", suma[2 * dimension + 1]);
}
printf("\n\n");
7. Verificacin de la matriz:
//verificar si la matriz es magica
cont = 0;
cont = suma[0];
for (i = 1; i < 2 * dimension + 1; i++)
{
if ((cont != suma[i]))
{
printf("La matriz no es magica");
i = 2 * dimension + 3;
}
else
if (i = 2 * dimension + 2)
{
printf("La matriz es magica y su suma es %d", cont);
}
}
8. Fin del algoritmo:
21

Matriz Mgica

getchar();
getchar();
return 0;
}
AHORA PROCEDEREMOS A REALIZAR LAS DIFERENTES PRUEBAS Y AS
VERIFICAR LA VALIDEZ DEL ALGORITMO:
*MATRIZ MGICA:
1. Ejecutamos el programa:

2. Escogeremos la dimensin con la que vamos a trabajar: (En este caso =4)

3. Digitaremos los valores de la matriz de inicio a fin:

4. Resultados:

22

Matriz Mgica

*MATRIZ NO MGICA:
Los pasos 1,2 y 3 sern exactamente iguales, lo que cambiar son los resultados obtenidos:
En el paso 3, los nmeros sern distintos ya que verificaremos una matriz no mgica.
4. Resultados:

23

Matriz Mgica

CDIGO JAVA:
package javaapplication1;
import java.util.*;
public class JavaApplication1 {

public static void main(String[] args)


{
1. Definimos variables:
int i, j, aux, dimension, cont;
Scanner dato=new Scanner(System.in);
2. Desplegamos el siguiente mensaje para elegir la dimensin:
System.out.print("Porfavor ingrese la dimension de la matriz con la que desea trabajar ");
dimension=dato.nextInt();
int matriz[][]=new int[10][10];
int suma[]=new int[300];
3. Ciclo para generar la matriz:
for (i = 0; i < dimension; i++)
{
for (j = 0; j < dimension; j++)
{
System.out.print("Digite los elementos de la matriz en la posicion " + i +
j+": " );
matriz[i][j]=dato.nextInt();
}
System.out.print("\n\n");
}
System.out.println("La matriz es: ");
for (i = 0; i < dimension; i++)
{
for (j = 0; j < dimension; j++)
{
System.out.print("\t"+matriz[i][j]);
}
System.out.print("\n");
}
System.out.print("\n");
System.out.println("+++++ Suma de matriz filas +++++");
24

Matriz Mgica

for (i = 0; i < 2 * dimension + 2; i++)


{
suma[i] = 0;
}
4. Suma filas :
//suma filas
for (i = 0; i < dimension; i++)
{
for (j = 0; j < dimension; j++)
{
suma[i] = matriz[i][j]+suma[i];
System.out.print("\t" + suma[i]);
}
System.out.print("\n\n");
}
System.out.print("\n");
System.out.println("+++++ Suma de matriz columnas +++++");
5. Suma columnas:
//suma columnas
for (j = 0; j < dimension; j++)
{
for (i = 0; i < dimension; i++)
{
suma[j + dimension] = matriz[i][j]+suma[j + dimension] ;
System.out.print("\t "+ suma[j + dimension]);
}
System.out.print("\n\n");
}
System.out.print("\n");
System.out.println("+++++ Suma de matriz diagonales +++++");
6. Suma diagonales:
//suma diagonales
for (i = 0; i < dimension; i++)
{
suma[2 * dimension] = matriz[i][i]+suma[2 * dimension] ;
System.out.print("\t "+ suma[2 * dimension]);
}
System.out.println("\n\n");
for (i = 0; i < dimension; i++)
25

Matriz Mgica

{
suma[2 * dimension + 1] = matriz[i][(dimension - 1) - i]+suma[2 * dimension + 1]
;
System.out.print("\t "+ suma[2 * dimension + 1]);
}
System.out.print("\n\n");
7. Verificacin de la matriz:
//verificar si la matriz es magica
cont = 0;
cont = suma[0];
for (i = 1; i < 2 * dimension+1 ; i++)
{
if (cont != suma[i])
{
System.out.println("La matriz no es magica");
i=2*dimension+3;
}
else
{
if (cont == suma[i])
{
System.out.println("La matriz es magica y su suma es "+cont);
i=2*dimension+3;
}
}
}
}
}
8. Fin de ciclo
AHORA PROCEDEREMOS A REALIZAR LAS DIFERENTES PRUEBAS Y AS
VERIFICAR LA VALIDEZ DEL ALGORITMO:
*MATRIZ MGICA:
1. Ejecutamos el programa y elegimos la dimensin con la que trabajemos: (En este caso = 4)

26

Matriz Mgica

2. Digitamos los valores de nuestra matriz de inicio a fin :

3. Resultados:

*MATRIZ NO MGICA:
Los pasos 1,2 y 3 sern exactamente iguales, lo que cambiar son los resultados obtenidos:
En el paso 3, los nmeros sern distintos ya que verificaremos una matriz no mgica.
4. Resultados:
27

Matriz Mgica

28

Matriz Mgica

CONCLUSIONES

En nuestra poca la tecnologa ocupa un papel muy importante en la sociedad ya que se


ha convertido en una de las herramientas ms utilizadas por la sociedad.
La programacin es inevitable en la vida diaria de las personas para cada cosa que
hacemos hay un orden o una sucesin de pasos para llegar a un objetivo.
Nuestro programa servir de ayuda al usuario del modo que le permita realizar los
procesos matemticos de una manera ms rpida y con mayor eficiencia.
El presente algoritmo funcionar exitosamente, si el operador realiza correctamente las
indicaciones dadas.
Como resultado obtendremos que si la suma de las filas, columnas y diagonales de una
matriz son iguales, sta se declarar como mgica.

RECOMENDACIONES

Se deber usar la tecnologa como medio de informacin para la investigacin sin


embargo se recomienda utilizar correctamente
Es necesario tener claro el concepto de matriz, para poder utilizarlo en cualquier mbito
de la programacin, en este caso como algoritmo.
Se recomienda buscar la mejor alternativa posible para la solucin del problema, ya que
el presente algoritmo no es el nico mtodo para desarrollar una matriz mgica.
El proyecto presentado puede ser modificado de acuerdo a la necesidad del operador.
Los profesores de los diferentes centros educativos deberan motivar ms al uso de la
programacin.

29

Matriz Mgica

BIBLIOGRAFA

CALDAS, U. D. (s.f.). Matrices. Obtenido de


http://ingenieria1.udistrital.edu.co/udin/pluginfile.php/26700/mod_resource/content/2/Ma
trices.pdf
Matriz mgica. (s.f.). Obtenido de http://dis.unal.edu.co/~programacion/book/modulo3.pdf
Microsoft. (s.f.). Matrices (Gua de programacin de C#). Obtenido de
https://msdn.microsoft.com/es-es/library/9b9dty7d.aspx

LIBRO DE PROGRAMACIN EN INGLS:


Walkenbach, J. (10 de Mayo de 2010). Excel 2010 Power Programming with VBA . Obtenido de
http://www.amazon.com/Excel-2010-Power-Programming-VBA/dp/0470475358

30