Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada Tema: Matrices en C#. Objetivos Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Introducción Arreglos Multidimensionales Los arreglos multidimensionales de dos dimensiones se utilizan con frecuencia para representar tablas de valores, que consisten en información ordenada en filas y columnas. Para identificar una tabla en particular debemos especificar dos índices. Por convención, el primero identifica la fila del elemento y el segundo su columna. Los arreglos que requieren dos índices para identificar un elemento específico se llaman arreglos bidimensionales. Sintaxis para declarar y crear los arreglos bidimensionales Aprendamos la declaración de matrices a través de un ejemplo. Como recordamos, cuando trabajamos con arreglos vamos a hacer uso de los signos de agrupación llamados corchetes, ya que con ello le especificamos al compilador que estamos trabajando con variables de tipo arreglo que han sido instanciados mediante la palabra clave new. Los tipos de datos que se pueden utilizar en los arreglos son los que hemos estudiando en las prácticas anteriores, por lo tanto en este ejemplo utilizamos un tipo de dato int: int [,] b; b = new int[ 3, 4 ] En el ejemplo anterior estamos creando una matriz de 3 filas y 4 columnas.
Al igual que en los arreglos de una dimensión se utilizaba un bucle (generalmente for) para cargar u operar los elementos de un vector, así también en las matrices vamos a utilizar bucles, con la diferencia que ahora utilizaremos un for para las filas y otro for para las columnas (for anidados). Material y Equipo Guía de laboratorio No. 9. Computadora con Visual Studio 2013 o superior. Dispositivo de almacenamiento (USB). Procedimiento G9Ejemplo1. Programa que carga una matriz de una dimensión establecida y muestra los valores en pantalla. 1 static void Main(string[] args) 2 { 3 Console.Title = "Ejemplo1 de una matriz 3x4"; 4 int[,] Matrix = new int[3,4]; 5 //Cargar y visualizar una matriz 6 for (int filas=0; filas<3; filas++) 7 {// for externo para filas 8 for (int columnas=0; columnas<4; columnas++) 9 {// for interno para columnas 10 Console.Write("Ingrese el valor de la posición [" + filas + "," + columnas + "]: "); 11 Matrix[filas,columnas]=int.Parse(Console.ReadLine()); 12 } 13 } 14 Console.Write("\n"); 15 Console.Write("Ahora visualizamos la matrix digitada..."); 16 Imprimir(Matrix); 17 Console.ReadKey(); 18 } 19 static void Imprimir(int[,] Matrix) 20 {
21 for (int filas = 0; filas < 3; filas++) 22 { 23 Console.Write("\n"); 24 for (int columnas = 0; columnas < 4; columnas++) 25 { 26 Console.Write("\t" + Matrix[filas, columnas] + "\t"); 27 } 28 } 29 } 30 G9Ejemplo2. Programa que suma dos matrices de 2 x 3. 1 static void Main(string[] args) 2 { 3 Console.Title = "Ejemplo2 Sumando 2 matrices 2x3"; 4 //Declarando las matrices 5 int[,] Matriz1 = new int[2,3]; 6 int[,] Matriz2 = new int[2,3]; 7 int[,] Matriz3= new int[2,3]; 8 //Digitamos la primer matriz 9 Console.Write("Digitamos la primer matriz [1]"); 10 Console.Write("\n"); 11 for (int i = 0; i < 2; i++) 12 {// for externo para filas 13 for (int j = 0; j < 3; j++) 14 {// for interno para columnas 15 Console.Write("Ingrese el elemento [" + i + "," + j + "]: "); 16 Matriz1[i,j] = int.parse(console.readline()); 17 } 18 } 19 Console.Write("\n"); 20 //Digitamos la segunda matriz 21 Console.Write("Digitamos la segunda matriz [2]"); 22 Console.Write("\n"); 23 for (int i = 0; i < 2; i++)
24 {// for externo para filas 25 for (int j = 0; j < 3; j++) 26 {// for interno para columnas 27 Console.Write("Ingrese el elemento [" + i + "," + j + "]: "); 28 Matriz2[i, j] = int.parse(console.readline()); 29 } 30 } 31 Console.Write("\n"); 32 //Realizamos el cálculo de la suma de las 2 matrices 33 Console.Write("Sumando las 2 matrices anteriores"); 34 Console.Write("\n"); 35 for (int i = 0; i < 2; i++) 36 {// for externo para filas 37 for (int j = 0; j < 3; j++) 38 {// for interno para columnas 39 Matriz3[i,j] = Matriz1[i,j] + Matriz2[i,j]; 40 } 41 } 42 //Llamamos a un procedimiento para visualizar el resultado 43 Mostrar(Matriz3); 44 Console.ReadKey(); 45 } 46 static void Mostrar(int[,] Matriz3) 47 { 48 for (int i = 0; i < 2; i++) 49 { 50 Console.Write("\n"); 51 for (int j = 0; j < 3; j++) 52 { 53 Console.Write("\t" + Matriz3[i,j] + "\t"); 54 } 55 } 56 }
G9Ejemplo3. Se tiene la siguiente información: Nombres de 4 operarios. Ingresos en concepto de sueldo, cobrado por cada operario, en los últimos 3 meses. Realizar un programa para: a. Realizar el ingreso de la información mencionada. b. Generar un vector que contenga el ingreso acumulado en sueldos en los últimos 3 meses para cada operario. c. Mostrar por pantalla el total pagado en sueldos a todos los operarios en los últimos 3 meses. d. Obtener el nombre del operario que tuvo el mayor ingreso acumulado 1 Console.ForegroundColor = ConsoleColor.Black; 2 Console.BackgroundColor = ConsoleColor.White; 3 Console.Title = "Ejemplo3 de matrices con vectores"; 4 Console.Clear(); 5 String[] empleados = new String[4]; 6 int[,] sueldos = new int[4,3]; 7 int[] sueldostot = new int[4]; 8 int x = empleados.length; 9 Console.WriteLine("el valor de x es: " + x); 10 //Primera Parte 11 for (int f=0; f<x; f++) 12 { 13 Console.Write("Ingrese el nombre del operario "+(f+1)+": "); 14 empleados[f] = Console.ReadLine(); 15 int y = sueldos.getlength(1); // devuelve el tamaño de la columna 16 for (int c=0; c<y; c++) 17 { 18 Console.Write("Ingrese sueldo " + (c + 1) + ": "); 19 sueldos[f,c] = int.parse(console.readline()); 20 } 21 } 22 //Segunda Parte 23 int z = sueldos.getlength(0); // devuelve el tamaño de la fila 24 for (int f=0;f<z;f++) 25 { 26 int suma=0; 27 int e = sueldos.getlength(1); 28 for (int c=0;c<e;c++) 29 { 30 suma = suma + sueldos[f, c]; 31 } 32 sueldostot[f] = suma; 33 } 34 //Tercera Parte 35 Console.WriteLine("\n"); 36 Console.WriteLine("-----Estadistica de Sueldos-----"); 37 Console.WriteLine("Total de sueldos pagados por Operario."); 38 for (int f = 0; f< sueldostot.length; f++)
39 { 40 Console.WriteLine(empleados[f] + " -> " + "\t $" + sueldostot[f]); 41 } 42 //Cuarta Parte 43 int may = sueldostot[0]; 44 string nom = empleados[0]; 45 for (int f = 0; f < sueldostot.length; f++) 46 { 47 if (sueldostot[f] > may) 48 { 49 may = sueldostot[f]; 50 nom = empleados[f]; 51 } 52 } 53 Console.WriteLine("El operario con mayor sueldo es " + nom + " que tiene un sueldo de $" + may); 54 Console.ReadKey(); } G9Ejemplo4. Hacer un programa o algoritmo que permita eliminar un alumno de un salón de clase, dada una posición indicada. Por ejemplo tenemos una matriz 3 x 3 Y queremos eliminar la posición [0,2], nos daría la siguiente respuesta:
1 1 0 1 Console.Title = "Ejemplo4 de Matrices"; 2 Console.ForegroundColor = ConsoleColor.Black; 3 Console.BackgroundColor = ConsoleColor.White; 4 Console.Clear(); 5 int f,c; 6 int[,] M = new int[3,3]; 7 Console.Write("Digitamos la matriz"); 8 Console.Write("\n"); 9 for(int i=0;i<3;i++) 10 { 11 for(int j=0;j<3;j++) 12 { 13 Console.Write("Ingrese el elemento [" + i + "," + j + "]: "); 14 M[i, j] = int.parse(console.readline()); 15 } 16 } 17 Console.WriteLine("\n"); 18 for (int i = 0; i < 3; i++) 19 { 20 Console.Write("\t\t"); 21 for (int j = 0; j < 3; j++) 22 { 23 Console.Write(M[i,j] + " "); 24 } 25 Console.WriteLine("\n"); 26 } 27 Console.WriteLine("Ingrese la posicion del alumno a eliminar"); 28 Console.Write("Ingresa fila: "); 29 f = int.parse(console.readline()); 30 Console.Write("Ingresa columna: "); 31 c = int.parse(console.readline()); 32 M[f,c]=0; 33 Console.WriteLine("\n"); 34 for (int i = 0; i < 3; i++) 35 { 36 Console.Write("\t\t"); 37 for (int j = 0; j < 3; j++) 38 { 39 Console.Write(M[i, j] + " "); 40 } 41 Console.WriteLine("\n"); 42 } 43 Console.ReadKey(); 44 }
Análisis de Resultados 1. Desarrollar una aplicación que pida al usuario la dimensión de una matriz, la cargue y le diga cuántos de los elementos ingresados fueron positivos, negativos y ceros. 2. Desarrollar una aplicación que busque el mayor y el menor elemento en una matriz. 3. Escriba un programa que realice la captura de datos de una matriz de números enteros con (3x4) elementos y luego saque el promedio de la matriz. Investigación Complementaria 1. Desarrollar una aplicación utilizando funciones o procedimientos para buscar cualquier elemento dentro de una matriz y mencione además la posición en donde se encuentra. 2. Utilizando un vector tipo carácter y una matriz numérica, realice un programa que lea los nombres de un grupo de alumnos y 3 notas, almacena las notas en la matriz. Calcule el promedio para cada alumno y luego muestre el listado de los alumnos con las notas respectivas. Bibliografía Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007.