Logo Studenta

ARREGLOS MULTIDIMENSIONALES

¡Estudia con miles de materiales!

Vista previa del material en texto

ARREGLOS MULTIDIMENSIONALES.
6.1.-Definición de Arreglos multidimensionales
 Un arreglo bidimensional es una colección finita, homogénea y ordenada de datos, en la que se hace referencia a cada elemento del arreglo por medio de dos índices. El primero se emplea para indicar la fila y el segundo indica la columna.
Para resolver problemas matemáticos, donde se tiene mas de una ecuación y dos o mas incógnitas es conveniente usar métodos numéricos, desarrollados con un objetivo específico.
Uno de los métodos numéricos más empleados es el de resolución de matrices.
Recordemos que una matriz es un conjunto de números ordenados (conocidos como elementos) e identificados por subíndices que indican la posición de la fila y la columna correspondiente donde se encuentra el elemento como se ve en la tabla 6.1, y por lo tanto es un arreglo de tipo bidimensional, así que en el presente capítulo trabajaremos en la mayoría de las veces con matrice.
	A[ Ø][ Ø]
	A[ Ø][1]
	A[ Ø][2]
	A[ Ø][3]
	A[ Ø][4]
	8
	3
	7
	6
	-9
	-3
	-16
	-9
	Ø
	5
	4
	5
	67
	7
	5
	
A[2][ Ø]
	
A[2][1]
	
A[2][2]
	
A[2][3]
	
A[2][4]
Tabla 6.1.-Representación de una matriz.
6.2.-DECLARACIÓN DE ARREGLOS BIDIMENSIONALES.
El espacio de memoria que ocupara nuestro arreglo se reserva en el momento en que lo declaramos, veamos como declararlos.
Int main (void)
{
……
int A[5][1Ø]; /*Declaración del arreglo A de tipo entero con 5 filas y 1Ø columnas.*/ 
float B[5][5]; /*Declaración del arreglo A de tipo real con 5 filas y 5 columnas.*/ 
……
}
Ejemplo 6.1.-A continuación realizaremos un ejercicio en el que al introducir los números de una matriz cuadrada de 1ØØ elementos, el programa nos imprime la diagonal principal de la matriz (recordemos que al ser una matriz cuadrada su dimensión será de 1 Ø filas por 1 Ø columnas).
#include <stdio.h>
#include <conio.h>
const int tam=1 Ø; /*Con esta constante definimos el tamaño del arreglo*/
int lec (int [ ], [tam], int);
int imp (int [ ], [tam], int);
int main ()
{
int mat[tam] [tam]; 
lec(mat, tam); /* Llamada a la función lec (lectura)*/
imp (mat, tam); /* Llamada a la función imp (imprime) */
getch ( );
}
int lec(int a[ ][tam], int f)
{
int i,j;
for( i= Ø; i<f; i++);
for( j= Ø; j<f; j++);
{
printf(“\n\tIngrese el elemento %d %d :”, i+1, j+1);
scanf ( “%d” , &a [ I ][ j ] );
}
}
int imp(int a[ ] [ tam ], intf)
{
Int i,j;
for( i= Ø; i<f; i++);
for( j= Ø ; j<tam; j++);
if ( i ==j )
printf(“\n\tDiagonal %d %d : %d” , i, j, a[ i ] [ j ])
}
Otra manera de asignar los valores a un arreglo es la siguiente:
……
Int a[3] [6] ={ Ø};
En este caso todos los elementos de la matriz inician en cero como se ve en la siguiente tabla.
	A[ Ø][ Ø]
	A[ Ø][1]
	A[ Ø][2]
	A[ Ø][3]
	A[ Ø][4]
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	
A[2][ Ø]
	
A[2][1]
	
A[2][2]
	
A[2][3]
	
A[2][4]
Tabla 6.2.-representación gráfica de la declaración de un arreglo bidimensional.
en la siguiente declaración del arreglo veras que los cuatro componentes de la primera fila toman como valores iniciales 1, 5,7, y 9 respectivamente, mientras que los demás tendrán el valor inicial cero.
Int b[3][5]={1,5,7,9]; 
	A[ Ø][ Ø]
	A[ Ø][1]
	A[ Ø][2]
	A[ Ø][3]
	A[ Ø][4]
	1
	5
	7
	9
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	Ø
	
A[2][ Ø]
	
A[2][1]
	
A[2][2]
	
A[2][3]
	
A[2][4]
Tabla 6.3.-representación gráfica de la declaración de un arreglo bidimensional.
Otra manera de declarar una matriz cuando se debe iniciar con valores predeterminados diferentes en cada uno de los elementos será.
Int c[3][5]={1,9,7,56, Ø,3Ø,3,43, Ø, 11 , 12, 43, Ø, Ø, 1 Ø Ø,3, 6, 15,23}
Aquí la asignación se realiza fila a fila, otra manera que evita confusiones es:
Int c[3][5]={1,9,7,56, Ø},{3Ø,3,43, Ø, 11 , 12, 43, Ø, Ø}, {1 Ø Ø,3, 6, 15,23}
Ambas formas las puedes relacionar a través del siguiente gráfico. 
	A[ Ø][ Ø]
	A[ Ø][1]
	A[ Ø][2]
	A[ Ø][3]
	A[ Ø][4]
	1
	9
	7
	56
	Ø
	3Ø
	3
	43
	Ø
	Ø
	1ØØ
	3
	6
	15
	23
	
A[2][ Ø]
	
A[2][1]
	
A[2][2]
	
A[2][3]
	
A[2][4]
Tabla 6.4.-representación gráfica de la declaración de un arreglo bidimensional.
Ahora resolvamos algunos ejercicios prácticos para mostrar la aplicación de los arreglos bidimensionales 
Ejemplo 6.2.-Elabora un programa que al recibir dos matrices las sume y presente el resultado en una tercer matriz.
#include <stdio.h>
#include <conio.h>
const int max=5Ø; /*Con esta constante definimos el tamaño del arreglo*/
int lec (int [ ], [max], int, int);
int sum (int [ ], [max], int [ ], [max], int [ ], [max], int, int);
int imp (int [ ], [max], int, int);
int main ()
{
int ma[max] [max], mb[max] [max], mc[max] [max]; 
int fil,col;
do
{
printf(“\n\tIngrese el numero de filas de los arreglos:”);
scanf ( “%d” , &fil );
}
while (fil>max ||fil<1);
do 
{
printf(“\n\tIngrese el numero de columnas de los arreglos:”);
scanf ( “%d” , &col );
}
while (col>max ||col<1);
printf(“\n\tLectura del arreglo ma”);
lec(ma,fil,col);
printf(“\n\tLectura del arreglo mb”);
lec(mb,fil,col);
sum (ma,mb,mc,fil,col);
printf(“\n\tImpresión del arreglo mc”);
imp (mc, fil,col);
getch ( );
 }
int lec (int a [ ], [max], int f, int c);
int i,j;
for( i= Ø; i<f; i++);
for( j= Ø; j<c; j++);
{
printf(“\n\tIngrese el elemento %d %d :”, i+1, j+1);
scanf ( “%d” , &a [ i ][ j ] );
}
}
int sum (int m1 [ ] [max], int m2 [ ] [max], int m3[ ] [max], int f, int c);
{
 int i,j;
for( i= Ø; i<f; i++);
for( j= Ø; j<c; j++);
m3[i][j]=m1[i][j] +m2[i][j];
}
int imp (int a[ ] [max], int f, int c);
{
Int i,j;
for( i= Ø; i<f; i++);
for( j= Ø ; j<c; j++);
printf(“\n\tElemento %d %d : %d” , i, j, a[ i ] [ j ])
}
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando arreglos multidimensionales desarrolle los siguientes programas. 
1. Dada una matriz determine si esta es simétrica.
2. Al recibir una matriz determina si es simétrica y obtiene la diagonal principal de la misma.
3. Dadas dos matrices de m filas por n columnas, determine si se pueden multiplicar.
4. Dadas dos matrices A y B realice un programa que obtenga la resta A-B de las matrices.
5. Desarrolla un programa que obtenga la matriz traspuesta de un arreglo cualquiera.
6. Escriba un programa que al ingresarle dos matrices las evalue y si es posible las multiplique, de lo contrario mande un mensaje del por que no se puede realizar la operación.
7. Escriba una matriz que genere un cuadrado mágico ( recuerda que un cuadrado mágico la suma de los elementos en cualquier fila, columna y diagonales da el mismo resultado).

Continuar navegando