You are on page 1of 15

Arreglos Bidimensionales

Estructura de Datos
Ing. Lourdes Roxana Daz Amaya
lulixa2000@yahoo.es

Matrices
Una matriz o arreglo bidimensional es un conjunto de
nmeros dispuestos en f filas (lneas horizontales) y c
columnas (lneas verticales).
Se dice que la matriz es de orden fxc, mientras que si
tuviera igual cantidad de filas y columnas sera una matriz
cuadrada.

A=

a 0, 0 a 0, 1 a 0, 2 . . . a 0, c-1
a 1, 0 a 1, 1 a 1, 2 . . . a 1, c-1
a 2, 0 a 2, 1 a 2, 2 . . . a 2, c-1
.
.
.
af-1,0 af-1,1 af-1,2 . . . af-1,c-1
fxc

Identificacin de cada elemento


Cada elemento aij, queda identificado mediante su fila i, y
columna j en la que se encuentra.
En C/C++ y C# y java, los subndices empiezan desde
cero y se indican encerrados entre corchetes.
As por ejemplo, el elemento que se encuentra ubicado en
la tercera fila, segunda columna es el a[2][1].

Tipos de Matrices
Matriz Transpuesta

Sea A una matriz de f filas y c columnas, la transpuesta


de A se denota por At, y se obtiene colocando las filas
(o columnas) de A como columnas (o filas) en At.

5
2
1

5
0

0
7
2
3x2

2
7

1
2
2x3

Matriz Identidad
Una matriz identidad tambin llamada unidad o unitaria,
es aquella cuyos elementos son todos ceros excepto
aquellos que pertenecen a la diagonal principal que son
unos.

A=

a 0, 0 a 0, 1 a 0, 2 . . . a 0, n-1
a 1, 0 a 1, 1 a 1, 2 . . . a 1, n-1
a 2, 0 a 2, 1 a 2, 2 . . . a 2, n-1
.
.
.
.
an-1,0 an-1,1 an-1,2. . . an-1,n-1

1
0
0
0
nxn

0
1
0
0

0
0
1
0

0
0
0
1
4x4

Matriz Triangular Superior


Una matriz triangular superior, es aquella matriz
cuadrada, cuyos elementos debajo de la diagonal
principal son todos ceros, es decir aij = 0, para todo i>j.

a
A=

0, 0

0
0
.
0

a 0, 1 a 0, 2 . . . a 0, n-1
a 1,1 a 1, 2 . . . a 1, n-1
0 a 2, 2 . . . a 2, n-1
.
.
.
0
0 . . . an-1,n-1

nxn

Problema:
Se tiene un grupo de fbricas y sus producciones
mensuales, cul es la produccin mensual del
conjunto?
Mes 0

Mes 1

...

Mes COL-1

Fabrica 0

100

200

120

350

770

Fabrica 1

150

100

260

360

870

Fabrica 2

350

240

400

130

Total x Mes

600

540

780

840

1120
2760

Fabrica que Produjo mas en el mes 0


En que mes la Fabrica 2 produjo mas?

= 350; i=2;
= en el mes j=2;

Total x Fabrica

Programa:
# include <iostream.h>
# define FIL 20
# define COL 12
void leerMatriz( float [ ][COL], int, int );
void impMatriz ( float [ ][COL], int, int );
void sumaColumnas(float [ ][COL], int, int );
void main(void)
{ float prod[FIL][COL];
int nroFabricas, nroMeses;
cout<<"Ingrese Matriz"<<endl;
cout<<"Nro de Fabricas? "; cin>>nroFabricas;
cout<<"Nro de Meses? "; cin>>nroMeses;
cout<<"Ingrese produccin mensual"<<endl;
leerMatriz(prod, nroFabricas, nroMeses);
impMatriz(prod, nroFabricas, nroMeses);
sumaColumnas(prod, nroFabricas, nroMeses);
} // fin de main

Programa:
void leerMatriz( float m[ ][COL], int f, int c)
{ for (int i=0; i<f; i++)
{ cout<<"Fabrica "<< i<<endl;
for (int j=0; j<c; j++)
{ cout<< m[ "<< i << ] [ << j << ]= ";
cin>> m[i][j];
}
}
}

void impMatriz(float m[ ][COL], int f, int c)


{ for (int i=0; i<f; i++)
{ for (int j=0; j<c; j++ )
cout << m [ I ] [ j ] <<"\t";
cout<<endl;
}
}

Programa:
void sumaColumnas( float m[ ][COL], int f, int c )
{ int i, j;
float sumaCol;
for (j=0; j<c; j++)
{ sumaCol = 0;
for (i=0; i<f; i++)
sumaCol += m [ I ] [ j ];
cout <<"Mes "<< j <<" se ha producido "<<
sumaCol<<endl;
}
}

Programa :Donde Suma Columnas es un


array
void sumaColumnas( float m[ ][COL], int f, int c )
{ int i, j;
float sumaCol[12];
for (j=0; j<c; j++)
// se lee j primero
{ sumaCol[j] = 0;
for (i=0; i<f; i++) // se lee I despues
sumaCol[j]= sumaCol[j] + m [ I ] [ j ];
}
}

Problema:
k=c1-1
pij =

Obtenga el producto
de dos matrices

12
34
56

1x1+2x5
3x1+4x5
5x1+6x5

1234
5678

1x2+2x6
3x2+4x6
5x2+6x6

aik bkj

k=0

1x3+2x7
3x3+4x7
5x3+6x7

11 14 17 20
1x4+2x8
3x4+4x8 = 23 30 37 44
35 46 57 68
5x4+6x8

Programa:

# include <iostream.h>
# define FIL 50
# define COL 50
void leerMatriz( float [ ][COL], int, int);
void impMatriz (float [ ][COL], int, int);
void multMatrices( float [ ][COL], float [ ][COL], float [ ][COL], int, int, int );
void main(void)
{ float a[FIL][COL], b[FIL][COL], p[FIL][COL];
int f1, c1, f2, c2;
cout<<"Primera Matriz"<<endl;
cout<<"Nro de Filas?: ";
cin>>f1;
cout<<"Nro de Columnas?: "; cin>>c1;
leerMatriz(a, f1, c1);
cout<<endl<<"Segunda Matriz"<<endl;
cout<<"Nro de filas?: ";
cin>>f2;
cout<<"Nro de columnas?: "; cin>>c2;
leerMatriz(b, f2, c2);
if (c1 == f2 )
{ cout<<La matriz<<endl;
impMatriz(a, f1, c1);
cout<<"Multiplicada con"<<endl; impMatriz(b, f2, c2);
cout<<"Resulta"<<endl;
multMatrices(a, b, p, f1, c1, c2);
impMatriz(p, f1, c2);
}
else cout <<"Nmero de columnas de la primera matriz"
<<"debe ser igual al nmero de filas de la segunda";
}

Programa:
void leerMatriz(float m[ ][COL], int f, int c)
{ int i, j;
for (i=0; i<f; i++)
for (j=0; j<c; j++)
{ cout<<"m["<<i<<"]["<<j<<"]= ";
cin>> m[i][j];
}
}
void impMatriz(float m[ ][COL], int f, int c)
{ int i, j;
for (i=0; i<f; i++)
{ for (j=0; j<c; j++)
cout <<m[i][j] << "\t";
cout<<endl;
}
}

Programa:
void multMatrices(float a[ ][COL], float b[ ][COL],
float p[ ][COL], int f1, int c1, int c2)
{ int i, j, k;
for (i=0; i<f1; i++)
for (j=0; j<c2; j++)
{ p[i][j] = 0;
for (k=0; k<c1; k++)
p[i][j] = p[i][j] + a[i][k]*b[k][j];
}
}

You might also like