Sei sulla pagina 1di 11

Arreglos bidimensionales

Benitez Luis – jean ceron


Que son los arreglos bidimensionales?

Un arreglo bidimensional es un arreglo de arreglos unidimensionales


(es un vector de vectores)
Todos los datos del arreglo bidimensional deben ser del mismo tipo
También se puede visualizar a un arreglo bidimensional como una
"matriz" con filas y columnas; el primer índice indica la fila y el
segundo indica la columna. En donde, al variar el primer índice, se
accede al arreglo a lo largo de una columna, y al variar el segundo
índice, se accede por una fila
int cuadro[3][4];
Declaracion de una matriz
• Una matriz se declara usando el siguiente formato
<TIPO> <NOMBREmatriz> [N][M]
Por ejemplo:
si se quiere declarar una matriz de diimension 15x4 y que va
almacenar tipo de datos carácter
char matriz[15][4]
int cuadro[3][4];

• Para identificar los elementos de la matriz, se utilizan dos


subíndices:
• El 1ero, indica a la fila donde se ubica.
• El 2do, indica en que columna esta.
Por ejemplo: cuadro[2][3]
se refiere al elemento ubicado en la
segunda fila y tercera columna
Nota: Los índices empiezan siempre en cero al igual que un arreglo
unidimensional
Inicialización de un arreglo bidimensional
• Es posible declarar e inicializar un arreglo a la vez. Por ejemplo:
int matriz[2][2] = {{5, 6},{7, 8}}
se almacenará en el arreglo matriz de la siguiente forma:
56
78
Si dentro de un par de llaves "faltan" constantes, los elementos son inicializados por defecto al
valor 0. Por ejemplo
int matriz[2][3] = {{5, 6},{7, 8}}
se almacenará en el arreglo matriz de la siguiente forma:
560
780
Si los datos son puestos solo entre llaves sin las llaves internas. Por ejemplo.
int matriz[2][3] = {5, 6, 7, 8};
se almacenará en el arreglo matriz de la siguiente forma:
567
800
Si se inicializa una matriz tipo char lo podemos hacer asi:
char dias [7][10]=
{"LUNES","MARTES","MIERCOLES","JUEVES","VIERNES","SABADO","DOMINGO"};
Inicialización de Arreglos Indeterminados Bidimensionales
En los arreglos indeterminados bidimensionales las filas son indeterminadas, omitiendo
el índice de las filas, ya que el compilador asignará automáticamente el espacio necesario
para las constantes a ser inicializadas.
• Por ejemplo, para crear un arreglo de 2 columnas:
La primera columna es un número entero y la segunda columna su cuadrado, se
declararía así:
int cuad [ ][2] = {
1, 1,
2, 4,
3, 9,
4, 16
};
• La ventaja de esta declaración es que la tabla puede alargarse o acortarse sin cambiar la
dimensión del arreglo.
Lectura
Para realizar la lectura de una matriz se hace de forma similar a un
arreglo unidimensional salvo que en este caso se usaría un for
anidado ya que el primer for recorrería las filas y el segundo for
recorrería las columnas.
• Matriz m x n
for(i=0;i<*fa;i++)
{
for(j=0;j<*ca;j++)
{
printf("Posicion[%d][%d]:",i,j);
scanf("%d",&a[i][j]);
}
}
• Si la matriz es tipo char, si es un string usaríamos la siguiente
forma
for(i=0;i<7;i++)
{
puts("ingrese el dia");
gets(dias[i]);
}
escritura
1era: 3er
for(i=0;i<7;i++) for(i=0;i<*fa;i++)
{ {
puts(dias[i]); for(j=0;j<*ca;j++)
} {
printf("\t%d ",a[i][j]);
}
printf("\n");
2da }
for(i=0;i<7;i++)
{
p=dias[i];
while(*p!='\0')
{
putchar(*p++);//para impimir un caracter
}
putchar('\n');//cada arreglo un espacio
}
memoria
• El almacenamiento de memoria, esta dispuesto en secuencia
contigua de modo que cada acceso debe convertir la posición
dentro del array en una posición dentro de una línea. Por ejemplo
en una matriz 3x2
Puntero a arreglos
• El nombre de un arreglo sin índices es un puntero a puntero dirigido al primer
elemento del arreglo. Por ejemplo, con las siguientes declaraciones:
int caucho[4][2]; /* Arreglo int de 4 filas y 2 columnas. */
int *punt; /* Puntero a entero. */
La asignación al puntero seria:
punt = &caucho[0][0];
Los elementos del arreglo bidimensional se almacenan en la memoria por filas,
como arreglos de una dimensión, el orden de ellos se determina variando primero
el índice de las columnas y luego el de las filas. En el anterior ejemplo se tendría:
caucho[0][0] caucho[0][1] caucho[1][0] caucho[1][1] …
Entonces, primero se coloca la primera fila, luego la segunda, la tercera, y así
sucesivamente. Por tanto, las direcciones de cada elemento serán:
punt == &caucho[0][0] /* Fila 0, columna 0 */
punt+1 == &caucho[0][1] /* Fila 0, columna 1 */
punt+2 == &caucho[1][0] /* Fila 1, columna 0 */
punt+3 == &caucho[1][1] /* Fila 1, columna 1 */

Potrebbero piacerti anche