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