Facultad: Ingeniera
Escuela: Ingeniera en Computacin
Asignatura: Programacin Estructurada
Tema: Matrices en C#.
Objetivos
Implementar arreglos de dos dimensiones.
Resolver problemas aplicando matrices.
Introduccin
Arreglos Multidimensionales
Los arreglos multidimensionales de dos dimensiones se utilizan con frecuencia para representar tablas de
valores, que consisten en informacin ordenada en filas y columnas.
Para identificar una tabla en particular debemos especificar dos ndices. Por convencin, el primero
identifica la fila del elemento y el segundo su columna.
Los arreglos que requieren dos ndices para identificar un elemento especfico se llaman arreglos
bidimensionales.
Sintaxis para declarar y crear los arreglos bidimensionales
Aprendamos la declaracin de matrices a travs de un ejemplo. Como recordamos, cuando trabajamos con
arreglos vamos a hacer uso de los signos de agrupacin 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 prcticas
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 dimensin se utilizaba un bucle (generalmente for) para cargar u operar
los elementos de un vector, as tambin 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
Gua de laboratorio No. 9.
Computadora con Visual Studio 2013 o superior.
Dispositivo de almacenamiento (USB).
Procedimiento
G9Ejemplo1. Programa que carga una matriz de una dimensin establecida y muestra los valores en
pantalla.
1 static void Main(string[] args)
2 {
3 [Link] = "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 [Link]("Ingrese el valor de la posicin [" + filas + "," + columnas + "]: ");
11 Matrix[filas,columnas]=[Link]([Link]());
12 }
13 }
14 [Link]("\n");
15 [Link]("Ahora visualizamos la matrix digitada....");
16 Imprimir(Matrix);
17 [Link]();
18 }
19 static void Imprimir(int[,] Matrix)
20 {
21 for (int filas = 0; filas < 3; filas++)
22 {
23 [Link]("\n");
24 for (int columnas = 0; columnas < 4; columnas++)
25 {
26 [Link]("\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 [Link] = "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 [Link]("Digitamos la primer matriz [1]");
10 [Link]("\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 [Link]("Ingrese el elemento [" + i + "," + j + "]: ");
16 Matriz1[i,j] = [Link]([Link]());
17 }
18 }
19 [Link]("\n");
20 //Digitamos la segunda matriz
21 [Link]("Digitamos la segunda matriz [2]");
22 [Link]("\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 [Link]("Ingrese el elemento [" + i + "," + j + "]: ");
28 Matriz2[i, j] = [Link]([Link]());
29 }
30 }
31 [Link]("\n");
32 //Realizamos el clculo de la suma de las 2 matrices
33 [Link]("Sumando las 2 matrices anteriores");
34 [Link]("\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 [Link]();
45 }
46 static void Mostrar(int[,] Matriz3)
47 {
48 for (int i = 0; i < 2; i++)
49 {
50 [Link]("\n");
51 for (int j = 0; j < 3; j++)
52 {
53 [Link]("\t" + Matriz3[i,j] + "\t");
54 }
55 }
56 }
G9Ejemplo3. Se tiene la siguiente informacin:
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 informacin 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 [Link] = [Link];
2 [Link] = [Link];
3 [Link] = "Ejemplo3 de matrices con vectores";
4 [Link]();
5 String[] empleados = new String[4];
6 int[,] sueldos = new int[4,3];
7 int[] sueldostot = new int[4];
8 int x = [Link];
9 [Link]("el valor de x es: " + x);
10 //Primera Parte
11 for (int f=0; f<x; f++)
12 {
13 [Link]("Ingrese el nombre del operario "+(f+1)+": ");
14 empleados[f] = [Link]();
15 int y = [Link](1); // devuelve el tamao de la columna
16 for (int c=0; c<y; c++)
17 {
18 [Link]("Ingrese sueldo " + (c + 1) + ": ");
19 sueldos[f,c] = [Link]([Link]());
20 }
21 }
22 //Segunda Parte
23 int z = [Link](0); // devuelve el tamao de la fila
24 for (int f=0;f<z;f++)
25 {
26 int suma=0;
27 int e = [Link](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 [Link]("\n");
36 [Link]("-----Estadistica de Sueldos-----");
37 [Link]("Total de sueldos pagados por Operario.");
38 for (int f = 0; f< [Link]; f++)
39 {
40 [Link](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 < [Link]; f++)
46 {
47 if (sueldostot[f] > may)
48 {
49 may = sueldostot[f];
50 nom = empleados[f];
51 }
52 }
53 [Link]("El operario con mayor sueldo es " + nom + " que tiene un sueldo
de $" + may);
54 [Link]();
}
G9Ejemplo4.
Hacer un programa o algoritmo que permita eliminar un alumno de un saln de clase, dada una posicin
indicada.
Por ejemplo tenemos una matriz 3 x 3
111
111
111
Y queremos eliminar la posicin [0,2], nos dara la siguiente respuesta:
110
111
111
1 [Link] = "Ejemplo4 de Matrices";
2 [Link] = [Link];
3 [Link] = [Link];
4 [Link]();
5 int f,c;
6 int[,] M = new int[3,3];
7 [Link]("Digitamos la matriz");
8 [Link]("\n");
9 for(int i=0;i<3;i++)
10 {
11 for(int j=0;j<3;j++)
12 {
13 [Link]("Ingrese el elemento [" + i + "," + j + "]: ");
14 M[i, j] = [Link]([Link]());
15 }
16 }
17 [Link]("\n");
18 for (int i = 0; i < 3; i++)
19 {
20 [Link]("\t\t");
21 for (int j = 0; j < 3; j++)
22 {
23 [Link](M[i,j] + " ");
24 }
25 [Link]("\n");
26 }
27 [Link]("Ingrese la posicion del alumno a eliminar");
28 [Link]("Ingresa fila: ");
29 f = [Link]([Link]());
30 [Link]("Ingresa columna: ");
31 c = [Link]([Link]());
32 M[f,c]=0;
33 [Link]("\n");
34 for (int i = 0; i < 3; i++)
35 {
36 [Link]("\t\t");
37 for (int j = 0; j < 3; j++)
38 {
39 [Link](M[i, j] + " ");
40 }
41 [Link]("\n");
42 }
43 [Link]();
44 }
Anlisis de Resultados
1. Desarrollar una aplicacin que pida al usuario la dimensin de una matriz, la cargue y le diga
cuntos de los elementos ingresados fueron positivos, negativos y ceros.
2. Desarrollar una aplicacin 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 nmeros enteros con (3x4)
elementos y luego saque el promedio de la matriz.
Investigacin Complementaria
1. Desarrollar una aplicacin utilizando funciones o procedimientos para buscar cualquier elemento
dentro de una matriz y mencione adems la posicin en donde se encuentra.
2. Utilizando un vector tipo carcter y una matriz numrica, 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.
Bibliografa
Deitel, Harvey M. y Paul J. Deitel, Cmo Programar en C#, Segunda Edicin, Mxico, 2007.