Arreglos Bidimensionales
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.
Ejemplo.
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
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
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
{entero:i,j
Escribir ("SUMA POR VENDEDOR ")
desde(i=0;i<m;i++) hacer
escribir(“vendedor [¡,i+1,”] =”,txv[i]
findesde
finprocedimiento
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:
Datos.
Entrada.
Salida:
Arreglo maxmes[4]:v.reral
m=3 y n =4
70 35 37 70
txm
maxmes
40 15 20 30
0 1 2 4
arreglo
1 2 3
4 5 6
7 8 9
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)
2 3 1 1 2 3 12
P9
1 1 2 3 5 4 16
5 2 12 1 3 2 25
GASTOS
0
1
2
8 6 15 5 1 9 GM
0
0 1 2
3 4 5
P11
9 10 12 10 11 7 pxc
PreUni
5
10
4
5
8