30
 UNIVERSIDAD CENTRAL DEL ECUADOR INGENIERÍA MATEMÁTICA PROGRAMACIÓN I PROYECTO: MATRIZ MÁGICA INTEGRANTES:  ÁGREDA STEFANY  BRAVO KEVIN  CHICAIZA NATHALY  CHUQUILLA DARÍO QUITO, 08 DE JULIO DEL 2015  

LOS SDKN - MATRIZ MÁGICA

Embed Size (px)

DESCRIPTION

Todas las personas debemos conocer el concepto de una matriz para poder organizar nuestra información, pero para ello debe generarse la intención de aprender. En programación se busca tratar de mejorar y facilitar procesos de nuestra vida cotidiana como lo es problemas de razonamientos matemáticos, por lo cual en nuestro trabajo se presentará un algoritmo que nos ayude a realizar procesos matemáticos los mismos que indicarán si una matriz que ingresamos es mágica o no mediante la verificación de la suma de sus filas y columnas pero siempre teniendo en cuenta que una matriz mágica es una matriz cuadrada.

Citation preview

  • 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

    2

  • 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.

    3

  • 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.

    5

  • 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.

    6

  • 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

    8

  • 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

  • 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(consumas[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(consumas[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/Matrices.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

    NDICETABLA DE ILUSTRACIONESRESUMENCAPTULO IEL PROBLEMAPLANTEAMIENTO DEL PROBLEMAOBJETIVOSObjetivo General:Objetivos Especficos:

    JUSTIFICACIN

    CAPTULO IIMARCO TERICOMATRIZMATRIZ MGICAALGORITMO EN PSEUDOCDIGO

    CDIGO EN VISUAL BASIC:CDIGO EN C:CDIGO JAVA:

    RECOMENDACIONESBIBLIOGRAFA