Vous êtes sur la page 1sur 6

MatricesoarreglosbidimensionalesenC

Lasmatrices sonarreglosdedosdimensiones,ascomolosvectoressonarreglosdeuna. La
diferenciaradicaenqueparaaccederaunelementodelamatrizsenecesitandosndices.Esto
hace que se puedan implementar computacionalmente. Ejemplo seran las tablas de doble
entrada.
Alasmatricesselesconocencomolaformamssimpledelosarreglosmultidimensionales.Es
esencialmente un arreglo de arreglos unidimensionales. Su declaracin genrica es la
siguiente:
tipodedatonombreidentificador[tamao1][tamao2];
Aqu, el tipo de dato puede ser cualquiera vlido en C, tanto primitivo como definido por el
usuario. Podemos referirnos a la estructura con un identificador vlido de C. Los tamaos
encerrados entre los corchetes nos indican las dos dimensiones de la matriz. Estos valores
debensernmerosenteros.Elespaciototalqueocupaenmemoriaeselproductodeltamao
delasdimensionesporloqueocupeeltipodedatoasociadoalamatriz.
Ejemplo1.Cargaunarreglobidimensionalconlosnmerosdel1al12yluegolos
imprimeenpantalla.
#include<stdio.h>
main(void)
{
intt,i,num[3][4];
for(t=0;t<3;++t)
for(i=0;i<4;++i)
num[t][i]=(t*4)+i+1;
/*ahoramuestralos*/
for(t=0;t<3;++t)
{
for(i=0;i<4;++i)
printf(%d,num[t][i]);
printf(n\);
}
return0;
}
En este ejemplo num[0][0], contiene el valor 1, num[0][1] contiene el valor 2, num[0][2] el
valor3,yassucesivamente.Elvalordenum[2][3]es12.
Los arreglos bidimensionales se almacenan en matrices filacolumna en las que el primer
ndice indica la fila y el segundo indica la columna. Esto significa que el ndice de ms a la
derechacambiamsrpidoqueeldemsalaizquierdacuandoaccedemosaelementosdel
arregloenelordenenquerealmentesehanalmacenadoenmemoria.


Segundondice

Primer
ndice

0,0
1,0
2,0
3,0
4,0

0,1
1,1
2,1
3,1
4,1

0,2
1,2
2,2
3,2
4,2

0,3
1,3
2,3
3,3
4,3

0,4
1,4
2,4
3,4
4,4

0,5
1,5
2,5
3,5
4,5

0,6
1,6
2,6
3,6
4,6

0,7
1,7
2,7
3,7
4,7

Ejemplo 2. Programa que solicite el nmero de renglones y columnas para un


arreglo bidimensional, solicite datos para ser llenado y despus lo muestre en
pantalla.

#include<stdio.h>
#include<conio.h>
main()
{
inty,z,c,r,x[100][100];
clrscr();
printf("DECUANTOSRENGLONESDESEALAMATRIZ:");
scanf("%d",&z);
printf("DECUANTASCOLUMNASDESEALAMATRIZ:");
scanf("%d",&y);
for(c=0;c<=(z1);c++)
{
for(r=0;r<=(y1);r++)
{
printf("DAMEELDATOX\(%d,%d\):",c,r);
scanf("%d",&x[c][r]);
}
}
clrscr();
for(c=0;c<=(z1);c++)
{
for(r=0;r<=(y1);r++)
printf("%d",x[c][r]);
printf("\n\n");
}
getch();
}

Ejemplo 3. Programa que solicite datos para una matriz de 2 x 2, y como salida
deberdeimprimirloselementosqueseencuentranenlaposicin1,1y2,2.

#include<stdio.h>
#include<conio.h>
main()
{
inta,b;
intc[3][3];
clrscr();
for(a=0;a<=2;a++)
{
for(b=0;b<=2;b++)
{
printf("DAMEELDATOA(%d,%d)",a,b);
scanf("%d",&c[a][b]);
}
}
clrscr();
printf("Eldatodelaposicin(1,1)es:%d",c[1][1]);
printf("\n");
printf("Eldatodelaposicin(2,2)es:%d",c[2][2]);
getch();
}

ArreglosmultidimensionalesenC
EnC,laclaveparadeclararunarreglomultidimensionalestenagregarmscorchetesalfinal
deladeclaracindeunamatriz.Entrecadaparejadecorcheteshayqueespecificareltamao
deesanuevadimensin.Laformagenricadehacereslasiguiente:
tipodedatonombreidentificador[tamao1][tamao2][tamao3][tamaoN];
Aqu, el tipo de dato est ntimamente relacionado con los valores que pueden adoptar los
contenidosdecadaelementodelarreglo.Estasestructuraspuedenserreferenciadasbajosu
nombre, que es un identificador vlido en C. Los tamaos 1, 2, 3, , N indican cuntas
dimensionesposeeelarregloyculeseltamaodecadauna.
Ejemplo:Programaquesolicitedatosparadosmatricesde2x2,solicitedatospara
estasdosmatrices,sedebedecalcularlarestadelasdosmatricesycomosalidase
imprimalasdosmatricesylamatrizresultante.
#include<stdio.h>
#include<conio.h>
main()
{
inta[2][2],b[2][2],c[2][2],d,e;
clrscr();
printf("CALCULALARESTADEDOSMATRICESDE2X2\n");
printf("DAMELOSDATOSDELAMATRIZA:\n");
for(d=0;d<=1;d++)
{
for(e=0;e<=1;e++)
{
printf("DAMEELDATOA\(%d,%d\):",d,e);
scanf("%d",&a[d][e]);
}
}
printf("DAMELOSDATOSDELAMATRIZB:\n");
for(d=0;d<=1;d++)
{
for(e=0;e<=1;e++)
{
printf("DAMEELDATOB\(%d,%d\):",d,e);
scanf("%d",&b[d][e]);
}
}
for(d=0;d<=1;d++)
{
for(e=0;e<=1;e++)
{
c[d][e]=a[d][e]b[d][e];
}
}
clrscr();
printf("LOSDATOSDELAMATRIZASON:\n");
for(d=0;d<=1;d++)

{
for(e=0;e<=1;e++)
{
printf("%d",a[d][e]);
}
printf("\n\n");
}
printf("LOSDATOSDELAMATRIZBSON:\n");
for(d=0;d<=1;d++)
{
for(e=0;e<=1;e++)
{
printf("%d",b[d][e]);
}
printf("\n\n");
}
printf("LOSDATOSDELAMATRIZRESULTANTECSON:\n");
for(d=0;d<=1;d++)
{
for(e=0;e<=1;e++)
{
printf("%d",c[d][e]);
}
printf("\n\n");
}
getch();
}

ARREGLOS MULTIDIMENSIONALES
PROBLEMAS PROPUESTOS
Crear un programa que:
1.

Solicite datos para dos matrices de 2 x 2 , se debe de calcular el producto de las dos matrices y
como salida se imprima las dos matrices y la matriz resultante.

2.

Solicite datos para dos matrices de 2 x 2 , se debe de calcular la suma de las dos matrices y
como salida se imprima las dos matrices y la matriz resultante.

3.

Mismo programa que 2 pero de entrada solicite numero de columnas y renglones para la dos
matrices.

4.

Mismo programa que el 3 pero que pida numero de renglones y columnas para la matriz, y
despus imprima las posiciones 1,1 , 2,2 , 3,3, 4,4 , 5,5, y as sucesivamente.

Mtro. Juan Miguel Camargo Pulido

Vous aimerez peut-être aussi