Documente Academic
Documente Profesional
Documente Cultură
INGENIERA MATEMTICA
PROGRAMACIN I
PROYECTO:
MATRIZ MGICA
INTEGRANTES:
GREDA STEFANY
BRAVO KEVIN
CHICAIZA NATHALY
CHUQUILLA DARO
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
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
Matriz Mgica
OBJETIVOS
Objetivo General:
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.
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:
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 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.
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:
10
Matriz Mgica
Matriz Mgica
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:
17
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:
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"
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
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)
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 {
Matriz Mgica
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
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
RECOMENDACIONES
29
Matriz Mgica
BIBLIOGRAFA
30