Está en la página 1de 10

ARREGLOS BIDIMENSIONALES

Son arreglos de dos dimensiones, también se llaman matrices es una colección finita,
homogénea y ordenada de datos. Su información está organizada en forma de tablas; es
decir, los elementos que la conforman están dispuestos bajo dos conceptos de
clasificación (fila y columna). Para poder indicar el lugar donde se encuentra un
determinado elemento, es necesario utilizar dos índices: uno para indicar el renglón o fila
y otro para indicar la columna.

Puede mirarse una matriz como un vector de vectores; por lo tanto, es un conjunto de
componentes en el que se necesitan dos subíndices para identificar un elemento que
pertenezca al arreglo. Un arreglo bidimensional M * N tiene M filas y N columnas; por
lo tanto, tiene M * N elementos dispuestos interiormente en memoria en forma sucesiva.

Gráficamente se puede representar como una tabla de valores.

Ejemplo.

a11 a12 a13 a14 filas


a00 a01 a02 a03 0

A= a21 a22 a23 a24 1


a10 a11 a13 a13

a 31 a32 a33 a34 a20 a21 a22 a23


3x4 2 3x4
0 1 2 3 f c
columnas

A[0][0] =10; A[1][3]=20; A[0][3]=30; A[2][,1]=3; A[2][3]=15;

DECLARACION DE ARREGLOS BIDIMENSIONALES

Se declara bajo el siguiente formato:

<tipo> <nombre-de-arreglo> [f][c]


Dode:
Tipo. - es el tipo de datos que almacenan sus componentes

<nombre-de-arreglo>. - es el nombre que cada usuario le asigna a la matriz, debe ser un


identificador.

f .- Tamaño de filas y c .- tamaño de columnas

Inicialización de un Arreglo bidimensional

A[0][0] =10; A[1][3]=20; A[0][3]=30; A[2][,1]=3; A[2][3]=15;


 int matriz[3][4] = {{1,2,3.10},{4,5,6,11},{7,8,9,12}};

matriz
1 2 3 10
4 5 6 11
7 8 9 12
Operaciones de Lectura/escritura

Entrada. Salida.
Orden de la matriz : m,n : v. entero Mostrar: A[0][0],……., A[m-1][n-1]
Elementos de la matriz: A[0][0],……., A[m-1][n-1] Índices.
Recorrido de filas: i. v, entero
Recorrido de columnas: j. v entero
Datos.
PSeudocódigo.
Algoritmo lectura_escritura
Constantes:
Max<- 10
Variables:
Entero: m,n,i,j.A[max][max]
Inicio
Hacer
Escribir(“Ingrerse erl orden de la matriz “)
Leer(m,n)
Mientras((m<1 ||m>max) y ((n<1 ||n>max))
//Lectura
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
escribir(“ A[“,i+1,”,”,j+1,”] =”)
leer A[i][j]
findesde
findesde
//Escritura
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
escribir(“ A[“,i+1,”,”,j+1,”] =”,A[i][j]
salto de línea
findesde
findesde
fin
Procedimientos y/o Funciones
Procedimiento leermatriz(entero: M[ ][max],entero: m, entero n)
{engtero: i,j}
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
escribir(“ m “,i+1,”,”,j+1,”] =”)
leer M[i][j]
findesde
findesde
finprocedimiento
Procedimiento vermatriz(entero: m[ ][max],entero: m, entero n)
{engtero: i,j}
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
escribir(“ M[“,i+1,”,”,j+1,”] =”,M[i][j]
salto de línea
findesde
findesde
finprocedimiento

procedimiento transpuesta( int M[][max],int tm[][max], int m, int n)


{entero : i,j}
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
tm[j][i]=M[i][j]

findesde
findesde
finprocedimient

Ejemplo.
Escribir un seudocódigo para realizar Las siguientes operaciones:
 Ingresar una matriz del orden mxn
 Determinar la suma de todos los elementos de cada fila.
 Determinar la suma de todos los elementos de cada columna
 Determinar la suma de todos los elementos de la matriz
 Determinar el elemento mayor de la matriz
Solución.
Para m=3 y n=4 (datos)
A F
1 2 3 4
10
5 6 7 8
26
9 10 11 12 42
0

1
2
C
15 18 21 24
0 78 1 2 3
total
Datos.
Entrada Salida.
Orden de la matriz : m,n , v. entero Vector: F[max] v.entero (suma de filas)
Matriz A[max][max] : v . entero Vector: C[max] v.entero (suma de columnas)
Suma de todos los elementos de la matriz.
total v. entero
mayor elemento de la matriz; ma: v. entero

Procedimientos
//Ingreso de elementos a la matriz mxn

Procedimiento leervector (entero: M[][max],entero: &m.entero: &n])


{entero: i,j}
hacer
escribir("Ingrese el orden de la matriz :";
leer(m,n)
mientras((m<1 v m>max) y (n<1||n>max))
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
escribir(“ m “,i+1,”,”,j+1,”] =”)
leer M[i][j]
findesde
findesde
finprocedimiento

//Suma de todos los elementos de las filas


Procedimiento sumafila (entero: M[][max],entero: m.entero: n,entero: F[max])
{entero i,j}
desde(i=0;i<m;i++) hacer
F[i]<- 0
desde(j=0;j<n;j++) hacer
F[i]<- F[i] + M[i][j]
Findesde
Findesde
Finprocedimiento

//Suma de todos los elementos de las columnas


Procedimiento sumacol (entero: M[][max],entero: m.entero: n,entero: C[max])
{entero i,j}
desde(j=0;j<n;j++) hacer
C[j]<- 0
desde(i=0;i<n;i++) hacer
C[j]<- C[j] + M[i][j]
Findesde
Findesde
Finprocedimiento

//suma de todos los elementos de matriz


Entero FUNCION suma(entero: F[ ],entero: m)
{entero: s}
s<- 0
desde(i=0;i<m;i++) hacer
s<- s + F[i]
findesde
retornar s
finfuncion
//mayor elementos de la matriz
Entero FUNCION mayor(entero: M[ ][max],entero: m,entero: n)
{entero: i,j,may}
May<--9999
int FUNCION mayor( int M[][max], int m, int n)
{int i,j,may;
may=-999;
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
si(M[i][j]>may)
entonces
may=M[i][j]
finsi
findesde
findesde
retornar may
finfuncion

Ejemplos:
Escribir un pseudocó digo que cree un array de N * 5 indicando que una empresa tiene N
vendedores cada uno de los cuales realiza 5 ventas. El array almacena los ingresos obtenidos
por cada vendedor en cada producto, imprimir el total de cada vendedor y obtener los
ingresos totales de la tienda.
Datos.
Entrada. Salida.
Nunero de vendedores : n v. entero Arreglo txv[max]. V.real;
Matriz tienda[max][5] : v.real Total venta tven v.real
1 2 3 4

5 6 7 8

9 10 11 12 tienda
txv
10
0
26
1 42

tven

Procedimiento leermatriz (entero: M[][max],entero: &m.entero: &n])


{entero: i,j}
hacer
escribir("Ingrese N° de vendedores y N° de Ventas :";
leer(m,n)
mientras((m<1 v m>max) y (n<1||n>max))
desde(i=0;i<m;i++) hacer
desde(j=0;j<n;j++) hacer
escribir(“ m [“,i+1,”,”,j+1,”] =”)
leer M[i][j]
findesde
findesde
finprocedimiento
//Suma de todos los elementos de las filas
Procedimiento sumaxvededor (entero: M[][max],entero: m.entero: n,entero: txv[max])
{entero i,j}
desde(i=0;i<m;i++) hacer
txv[i]<- 0
desde(j=0;j<n;j++) hacer
txv[i]<- txv[i] + M[i][j]
Findesde
Findesde
Finprocedimiento

// mostrar suma por vendedor


Procedimiento mostrarsumaxvendedor(entero: txv[max],entero: m)
{entero:i,j
Escribir ("SUMA POR VENDEDOR ")
desde(i=0;i<m;i++) hacer
escribir(“vendedor [¡,i+1,”] =”,txv[i]
findesde
finprocedimiento
//suma de todos los elementos de matriz
Entero FUNCION suma(entero: txv[ ],entero: m)
{entero: s}
s<- 0
desde(i=0;i<m;i++) hacer
s<- s + txv[i]
findesde
retornar s
finfuncion

7.- Una empresa de venta de productos por correo desea realizar una estadística de las ventas
realizadas de cada uno de los productos a lo largo del año. Distribuye un total de m productos, por
lo que las ventas se pueden almacenar en una tabla de m filas por 12 columna. Se desea conocer:

 El total de ventas de cada uno de los productos.


 El total de ventas de cada mes.
 El producto más vendido en cada mes.
 El nombre, el mes y la cantidad del producto más vendido.

Datos.

Entrada.

Número de productos: m V.entero

Tabla de ventas: ventas[m][4]: v-real

Arreglo productos[m][20] v:cadena

Salida:

Arreglo txp[m]: v.reral

Arreglo txm[4]: v.real

Arreglo maxmes[4]:v.reral

m=3 y n =4

Productos ventas txp


a 20 15 8 30 73
0
b 10 15 9 10 44
1
c 40 5 20 30 95
2

txm 70 35 37 70

maxmes
40 15 20 30
0 1 2 4

PUNTEROS Y MATRICES DINÁMICAS


Para crear una matriz dinámica debemos de crear un doble puntero int **pm y usamos al
igual que los vectores el operador new para reservar memoria y delete para liberar. Primero
tenemos que crear el vector que contendrá a otros vectores especificando el número de
vectores que tendra

arreglo

1 2 3
4 5 6
7 8 9

Por lo tanto, el nombre de la matriz no va a ser simplemente un puntero hacia


elementos, sino que es un puntero hacia un arreglo de punteros, lo que significa que
hay que declararlo como un puntero hacia un puntero. Esta lógica puede extenderse a
cualquier cantidad de dimensiones.

La matriz del diagrama anterior la podemos ver como una matriz de 5 filas por 7
columnas. Y creamos la matriz dinámica de la siguiente manera.
int **arreglo
arreglo = new int*[5];
for (int i = 0; i < 5; i++)
    arreglo[i] = new int[7];
para acceder a cada componente de la matriz se de usar la siguiente expresión

p[i][j] = *(*(p + i) + j) = *(pm[i] + j)


P9

2 3 1 1 2 3 12
GASTOS
1 1 2 3 5 4 16
5 2 1 1 3 2 25
2
0
1
2

8 6 15 5 1 9 GM
0
0 1 2
3 4 5

P11

CANT pxt CapInv


1 2 1 3 1 1 9 45
2 2 3 1 1 1 10 100
3 3 4 2 2 2 16 64
1 2 2 1 3 1 10 50
2 1 2 3 4 2 14 112

9 10 12 10 11 7 pxc

PreUni
5
10
4
5
8

También podría gustarte