Matrices

Anuncio
Matrices
Matriz
Una matriz es una estructura de datos que permite almacenar una colección de
elementos, todos del mismo tipo. La diferencia con los vectores está en que, en
las matrices, los elementos no están organizados linealmente, sino que su
organización es bidimensional, es decir, en filas y columnas.
A modo de ejemplo, la siguiente matriz (denominada M) posee 25 celdas,
distribuidas en 5 columnas y 5 filas. Cada celda de la matriz es identificada por 2
índices (valores enteros) que comienzan en [0,0].
0
1
2
3
4
0
-12
345
0
-4
45
1
3
23
45
67
89
2
26
12
78
23
67
3
49
0
45
890
9067
4 500
-1
0
56
-3
De esta manera, si deseamos referirnos a una celda ubicada en la tercera fila y
tercera columna de la matriz M, lo indicamos como M[3,3]. Nótese que todos los
elementos de la matriz son del mismo tipo de dato (en este caso, entero) por lo
que la matriz M es de tipo entero. El primer elemento de la matriz es M[0,0] y el
último es M[4,4].
El tamaño de una matriz corresponde al número de celdas que lo conforman. En el
caso anterior, el tamaño es de 25 (5x5).
Una característica importante de una matriz cuadrada (aquella que tiene igual
número de filas y columnas), son sus diagonales (principal y secundaria). Por
ejemplo, en la matriz anterior, la diagonal principal queda definida por las celdas:
M[0,0], M[1,1], M[2,2], M[3,3], M[4,4]; y la diagonal secundaria queda definida por
las celdas: M[0,4], M[1,3], M[2,2], M[3,1], M[4,0].
Sobre las celdas de una matriz, se pueden realizar todas las operaciones que
permitan sus elementos. Por ejemplo, si deseamos obtener la suma de los
elementos de la diagonal principal de la matriz M antes descrita, entonces se
puede escribir: M[0,0]+M[1,1]+M[2,2]+M[3,3]+M[4,4].
Una matriz puede tener diferentes números de filas y columnas. Por ejemplo, una
matriz P puede ser definida con 10 columnas y 6 filas. En este caso, no se aplica
la definición de diagonal.
Declaración de una matriz
En lenguaje C, una matriz se declara como:
tipo nombre_matriz[cant_filas][cant_columnas];
Por ejemplo, una matriz x (de enteros) de 2 filas y 3 columnas se declara como:
int x[2][3];
Si deseamos almacenar los números 23, 34, 500, 11, 0 y 9001 (en ese mismo
orden), quedaría algo como:
0
1
2
0
23
34
500
1
11
0
9001
Otros ejemplos:
int m[3][3];
float n[3][5];
double o[6][2];
Llenado de una matriz
Por ejemplo, si tenemos la siguiente matriz:
int m[3][4];
Para llenarla, podemos hacerlo de dos maneras distintas:
1.- Casilla por casilla
m[0][0]=120;
m[0][1]=23;
⋮
m[2][2]=-89;
m[2][3]=365;
2.- Utilizando sentencias iterativas
int i=0, j=0, dato;
while(i<3)
{
while(j<4)
{
printf(“Ingrese dato: ”);
scanf(“%d”, &dato);
m[i][j]=dato;
j++;
}
i++;
}
int i, j, dato;
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
printf(“Ingrese dato: ”);
scanf(“%d”, &dato);
m[i][j]=dato;
}
}
Nótese que los dos métodos de llenado (while y for) hacen exactamente lo mismo.
Ejemplos
1.- Escriba un algoritmo en C que almacene datos de tipo entero en una matriz de
𝑛 filas y 𝑚 columnas (tanto el número de filas y columnas como los datos que se
almacenarán, se deben pedir por pantalla).
int main()
{
int n, m, i, j, dato;
printf(“Ingrese numero de filas: ”);
scanf(“%d”, &n);
printf(“Ingrese numero de columnas: ”);
scanf(“%d”, &m);
int a[n][m];
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf(“Ingrese dato: ”);
scanf(“%d”, &dato);
a[i][j]=dato;
}
}
}
2.- Escriba un algoritmo en C que dada una matriz llena de 𝑛 filas y 𝑚 columnas,
muestre por pantalla todos sus elementos (la matriz es de tipo entero).
int main()
{
⋮
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf(“%d\t”, a[i][j]);
}
printf(“\n”);
}
}
3.- Escriba un algoritmo en C que dada una matriz llena de 𝑛 filas y 𝑚 columnas,
calcule la suma de todos sus elementos (la matriz es de tipo entero).
int main()
{
⋮
int sum=0;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
sum+=a[i][j];
}
}
}
Ejercicios propuestos
1.- Escriba un algoritmo en C que dada una matriz llena de 𝑛 filas y 𝑚 columnas,
determine cuantos elementos son pares y cuantos son impares (la matriz es de
tipo entero).
2.- Escriba un algoritmo en C que dada una matriz cuadrada llena de 𝑛 filas y 𝑚
columnas (donde 𝑛 = 𝑚), calcule la suma de todos los elementos que se
encuentran en la diagonal principal (la matriz es de tipo entero).
3.- Escriba un algoritmo en C que dada una matriz cuadrada llena de 𝑛 filas y 𝑚
columnas, calcule la suma de todos los elementos que se encuentran en la
diagonal secundaria (la matriz es de tipo float).
Descargar