martes, 27 de mayo de 2014

Matrices (Arreglos Bidimensionales)

Un arreglo bidimensional es un conjunto de n elementos del mismo tipo almacenados en memoria contigua en una matriz o tabla. A diferencia de los arreglos unidimensionales que solo requieren de un sub-indice, los arreglos bidimensionales para acceder a cada elemento del arreglo requieren de dos indices declarados en dos pares de corchetes, donde el primer corchete se refiere al tamaño de filas y el segundo al tamaño de las columnas. 

Para declarar una matriz/tabla de 3 filas y 5 columnas se procede de la siguiente forma: 

tipo_dato   identificador_arreglo  [tam_fila] [tam_columna] ; 
int matriz [3] [5] ; 

donde: 
tipo_dato es el tipo de dato de la matriz 
identificador_arreglo es el nombre de la matriz 
tam_fila es el numero total de filas en la matriz 
tam_columna es el numero total de columnas de la matriz 

Inicializacion de matrices 

En el momento de declarar el arreglo, se pueden especificar valores. 

tipo_dato   identificador_arreglo  [tam_fila] [tam_columna] = { valores } ;
int matriz [3] [3] = { 1,2,3,4,5,6,7,8,9 } ;

Lectura en impresión de matrices 

Para la lectura de datos, la computadora requiere de dos ciclos anidados (para ubicar la fila y la columna) y la instrucción leer scanf o leercad gets, almacenando con ello los valores en cada celda de la tabla o matriz. 
En el siguiente ejemplo, se muestra como se pueden almacenar datos en una matriz de nombre mat de 3 filas y 4 columnas, se utiliza la instrucción leer scanf para guardar o leer los datos recibidos: 

for (  z = 0 ; z < 3 ; z ++ )  --------------------------- Recorre cada fila z 
      for ( h = 0 ; h < 4 ; h ++ )------------------------ Recorre cada columna h
        scanf ("%d", &mat[z][h]);--------------------Lee y almacena los datos en fila y columna

Cuando existen dos ciclos anidados, primero se inicializa el ciclo de fuera, posteriormente realiza el que se encuentra dentro y hasta que termine con el regresa al ciclo de fuera, en este caso, primero inicia el ciclo "z" y hasta que termina con todas las columnas "h" de la fila #0 y continua con la fila #1, iniciando de nuevo con la columna (h = 0).


En el siguiente ejemplo, se muestra como se pueden imprimir los datos almacenados en una matriz llamada mat de 3 filas y 4 columnas. Se utiliza la instrucción imprimir (printf) para escribir o mostrar el resultado: 

for (  z = 0 ; z < 3 ; z ++ ) --------------------------- Recorre cada fila z 
    for ( h = 0 ; h < 4 ; h ++ )------------------------ Recorre cada columna h
       printf ("%d", mat[z][h]); ------------------------ Imprime el valor recogido en el ejemplo                                                                          siguiente


Modificación de un elemento de una matriz

Los elementos de una matriz se pueden modificar en cualquier momento durante la ejecución del programa, solo es necesario especificar  el nombre del arreglo bidimensional (matriz), la posición del elemento que deseamos modificar y el nuevo valor que tomará. A continuación se muestra un ejemplo modificando el valor de un elemento de una matriz: 

tipo_dato  identif_arre [fila][columna] = nuevo_valor; 
 int    mat  [2][4]= 7; 

Donde: 
  • nuevo_valor es un dato o el resultado de una llamada a función o de alguna operación lógica o aritmética. En este ejemplo, se modifica el valor de elemento de la segunda fila y la cuarta columna a 7.
La mayoría de las manipulaciones con arreglos utilizan la estructura de control desde (for). Por ejemplo, el siguiente código define todos los elementos en el tercer renglón o fila del arreglo z (la fila 2 almacena los elementos de la tercera fila); donde el único indice que se modifica es el j, que sirve para cambiar el indice de las columnas: 

int z [4][4] ; 
for (j=0 ; j<4 ; j++)
    a[2][j]= 5 ; 

El ciclo desde (for) es equivalente  a los enunciados de asignación siguientes: 

  •  z[2][0] = 5 
  • z [2][1] = 5 
  • z [2][2] = 5 
  • z [2][3] = 5 
lo que significa que a toda la tercera fila de la matriz se le asigna el valor de 5. 

No hay comentarios:

Publicar un comentario