You are on page 1of 10

UNIDAD V:

ARREGLOS BIDIMENSIONALES
DIMENSIONALES
Unidad V: Arreglos Bidimensionales

UNIDAD V: ARREGLOS BIDIMENSIONALES

1.1 GENERALIDADES:

Las matrices son una coleccin finita, homognea y ordenada de datos. Su informacin est
organizada en forma de tablas; es decir, los elementos que la conforman estn dispuestos bajo
dos conceptos de clasificacin (fila y columna). Para poder indicar el lugar donde se encuentra
un determinado elemento, es necesario utilizar dos ndices: uno para indicar el rengln 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 subndices para identificar un elemento que
pertenezca al arreglo.

Un arreglo bidimensional N * M tiene N filas y M columnas; por lo tanto, tiene N * M elementos


dispuestos interiormente en memoria en forma sucesiva. Un array de dos dimensiones
equivale a una tabla de mltiples filas y mltiples columnas.

Grficamente se puede representar como una tabla de valores.

Estructura de un array de dos dimensiones.

Si las filas se etiquetan de 0 a m y las columnas de 0 a n, el nmero de elementos que tendr el


array ser el resultado del producto N * M. El sistema para localizar un elemento ser por las
coordenadas representadas por el nmero de fila y su nmero de columna (fila, columna).

1.2 DECLARACIN DE ARRAYS BIDIMENSIONALES

El espacio que los arreglos ocupan en memoria se reserva en el momento de realizar la


declaracin de los mismos.

La sintaxis para la declaracin de un array de dos dimensiones es:


Dimension nombre_arreglo[numero_filas,numero_columnas];

Ejemplos de declaracin de arreglos bidimensionales:

Definir matriz_ejemplo como Entero;

Dimension matriz_ejemplo[3,2]; //Matriz de 3 filas y 2 columnas que puede almacenar 6 elementos

2
Unidad V: Arreglos Bidimensionales

1.3 INICIALIZACIN DE UN ARRAY:

Se deben asignar valores a los elementos del arreglo antes de utilizarlos, tal como se asignan
valores a variables. Para asignar valores a cada elemento del arreglo de enteros
matriz_ejemplo, se puede escribir:

matriz_ejemplo [0,0] <- 15;

matriz_ejemplo [0,1] <- 25;

matriz_ejemplo [1,0] <- 30;

matriz_ejemplo [1,1] <- 35;

matriz_ejemplo [2,0] <- 8;

matriz_ejemplo [2,1] <- 5;

Ejemplo #1: Pseudocdigo para inicializar un arreglo de 2 filas y 3 columnas a 0.

Solucin #1:
Proceso inicializar_bidi
Definir matriz_ejemplo,fila,columna como entero;
Dimension matriz_ejemplo[3,3];
Para fila<-0 Hasta 2 Con Paso 1 Hacer
Para columna<-0 Hasta 2 Con Paso 1 Hacer
matriz_ejemplo[fila,columna] <- 0;
Escribir Sin Saltar matriz_ejemplo[fila,columna]," ";
FinPara
Escribir " ";
FinPara
FinProceso

1.4 OPERACIONES QUE SE PUEDEN REALIZAR EN UNA MATRIZ:

Se puede acceder a los elementos de arrays multidimensionales de igual forma que a los
elementos de un array unidimensional. La diferencia reside en que en los elementos
bidimensionales deben especificarse los ndices de la fila y la columna.

El formato general para asignacin directa de valores a los elementos es:

Insercin de elementos:
<Nombre array> [ndice_fila,ndice_columna] = valor elemento;

Extraccin de elementos:
<Variable> = <nombre array>[ndice_fila,ndice_columna];

3
Unidad V: Arreglos Bidimensionales

Ejemplo 2: Escribir un pseudocdigo que lea una matriz de N filas y M columnas de


valores enteros. A continuacin, debe pedir el nmero de una fila (Recuerde validar
dicho dato). El pseudocdigo deber devolver el mayor elemento de esa fila.

Proceso ElementoMayorFila
Definir matriz_ejemplo,fila,columna,fil,col,may,posfil,c como entero;
Escribir "Filas: ";
Leer fil;
Escribir "Columnas: ";
Leer col;
Escribir fil,col;
Dimension matriz_ejemplo[fil,col];
Para fila<-0 Hasta fil-1 Hacer
Para columna<-0 Hasta col-1 Hacer
Escribir Sin Saltar "Numero[",fila,",",columna,"]:";
Leer matriz_ejemplo[fila,columna];
FinPara
FinPara
Escribir Sin Saltar "Que fila desea evaluar? (0...",fil-1,")";
Leer posfil;
may<-0;
Si posfil>0 Y posfil<=(fil-1) entonces
Para c<-0 Hasta col-1 Hacer
Si matriz_ejemplo[posfil,c]>may Entonces
may<-matriz_ejemplo[posfil,c];
FinSi
FinPara
Escribir "El mayor elemento de la fila: ",posfil," es : ",may;
Sino
Escribir "Numero de fila invalido";
FinSi
Para fila<-0 Hasta fil-1 Con Paso 1 Hacer
Para columna<-0 Hasta col-1 Con Paso 1 Hacer
Escribir Sin Saltar matriz_ejemplo[fila,columna], " ";
FinPara
Escribir "";
FinPara
FinProceso

4
Unidad V: Arreglos Bidimensionales

Ejemplo 3: Pseudocdigo que rellene automticamente una matriz N*M con la suma de
sus ndices (Es decir, el elemento a[1][1] = 1+1=2, a[3][2] = 3+2=5). El algoritmo
mostrar la matriz resultante por pantalla.

Solucin #3:
Proceso suma_indices
Definir a,sumind,fil,col,f,c Como entero;
Repetir
Escribir "NUMERO DE FILAS: ";
Leer fil;
Hasta Que fil>0 O fil>=1

Repetir
Escribir "NUMERO DE COLUMNAS: ";
Leer col;
Hasta Que col>0 O col>=1

Dimension sumind[fil,col]; //Declaracin de la matriz

Para f<-0 Hasta (fil-1) Hacer


Para c<-0 Hasta (col-1) Hacer
sumind[f,c]<-f+c;
FinPara
FinPara

//Impresin de los datos


Escribir "Imprimir la suma de los ndices en cada elemento del array";
Para f<-0 Hasta fil-1 Hacer
Para c<-0 Hasta col-1 Hacer
Escribir sin saltar sumind[f,c]," ";
FinPara
Escribir " ";
FinPara
FinProceso

5
Unidad V: Arreglos Bidimensionales

Ejemplo #4: Pseudocdigo que imprime la suma de cada una de las filas de una matriz
bidimensional N*M.

Solucin #4:
Proceso suma_filas
Definir a,sumafil Como Real;
Definir fil,col,f,c Como Entero;

Repetir
Escribir "NUMERO DE FILAS: ";
Leer fil;
Hasta Que fil>0 O fil>=1

Repetir
Escribir "NUMERO DE COLUMNAS: ";
Leer col;
Hasta Que col>0 O col>=1

Dimension a[fil,col]; // Declaracin de la matriz

//Lectura de los datos de la matriz


Escribir "**Introduzca los datos de la matriz**";
Para f<-0 Hasta fil-1 Hacer
Para c<-0 Hasta col-1 Hacer
Escribir "Elemento[",f,"][",c,"]:";
Leer a[f,c];
FinPara
FinPara

//Escribir la suma de cada fila


Para f<-0 Hasta fil-1 Hacer
sumafil=0;
Para c<-0 Hasta col-1 Hacer
sumafil <- sumafil + a[f,c];
FinPara
Escribir "La suma de la fila ",f,"= ",sumafil;
FinPara

FinProceso

6
Unidad V: Arreglos Bidimensionales

Ejemplo #5: Pseudocdigo que permita calcular la suma de los elementos de la diagonal
principal de una matriz (N*N), el producto de los elementos de la diagonal secundaria.

Solucin #5:
Proceso diagonal_sum_prod
Definir matriz,f,c,fil,producto_d,suma_d como Entero;
suma_d<-0;
producto_d<-1;

Repetir
Escribir "NUMERO DE FILAS: ";
Leer fil;
Hasta Que fil>0 O fil>=1

Dimension matriz[fil,fil];

Para f<-0 Hasta fil-1 Hacer


Para c<-0 Hasta fil-1 Hacer
Escribir "Elemento[",f,"][",c,"]:";
Leer matriz[f,c];
//Diagonal Principal
Si f = c Entonces
suma_d <- suma_d + matriz[f,c];
FinSi
//Diagonal Secundaria
Si(f+c)=(fil-1) Entonces
producto_d <- producto_d * matriz[f,c];
FinSi
FinPara
FinPara

Escribir "*****DATOS DE LA MATRIZ*****";


Para f<-0 Hasta fil-1 Hacer
Para c<-0 Hasta fil-1 Hacer
Escribir sin saltar matriz[f,c], " ";
FinPara
Escribir "";
FinPara
Escribir "La suma de la diagonal pricipal es:",suma_d;
Escribir "El producto de la diagonal secundaria es:",producto_d;
FinProceso

7
Unidad V: Arreglos Bidimensionales

Ejemplo #6: Pseudocdigo 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.

Solucin #6:
Proceso vendedores
Definir total_vta,tienda,suma_vta,v,p,nv Como Entero;
Escribir "Introduzca el numero de vendedores:";
Leer nv;
Dimension tienda[nv,5];

//Lectura de los datos de la matriz


Para v<-0 Hasta nv-1 Con paso 1 Hacer
Escribir "***VENDEDOR ",v+1,"***";
Para p<-0 Hasta 4 Hacer
Escribir "Venta[",v+1,",",p+1,"]:";
Leer tienda[v,p];
FinPara
FinPara

//Calcular e imprimir la suma de las 5ventas realizadas por cada vendedor


Para v<-0 Hasta nv-1 Con paso 1 Hacer
suma_vta<-0;
Para p<-0 Hasta 4 Con paso 1 Hacer
suma_vta <- suma_vta + tienda[v,p];
FinPara
Escribir "El vendedor[",v+1,"] vendio C$: ",suma_vta;
total_vta <- total_vta + suma_vta;
FinPara
Escribir "EL TOTAL DE VENTAS ES C$ ",total_vta;
FinProceso

8
Unidad V: Arreglos Bidimensionales

Ejemplo #7: Pseudocdigo que al recibir dos arreglos bidimensionales MA y MB de n*m


elementos cada uno, calcule la suma de ambos arreglos, almacene el resultado en una matriz e
imprima el resultado obtenido.

Solucin #7:
Proceso suma_matriz
Definir f,c,fil,col,MA,MB,MSUMA Como Entero;
Repetir
Escribir "NUMERO DE FILAS: ";
Leer fil;
Hasta Que fil>0 O fil>=1

Repetir
Escribir "NUMERO DE COLUMNAS: ";
Leer col;
Hasta Que col>0 O col>=1

Dimension MA[fil,col],MB[fil,col],MSUMA[fil,col];

Escribir "***DATOS DE LA MATRIZ A***";


Para f<-0 Hasta fil-1 con paso 1 Hacer
Para c<-0 Hasta col-1 con paso 1 Hacer
Escribir "MATRIZ A[",f,",",c,"]: ";
Leer MA[f,c];
FinPara
FinPara

Escribir "***DATOS DE LA MATRIZ B***";


Para f<-0 Hasta fil-1 con paso 1 Hacer
Para c<-0 Hasta col-1 con paso 1 Hacer
Escribir "MATRIZ B[",f,",",c,"]: ";
Leer MB[f,c];
MSUMA[f,c]<-MA[f,c] + MB[f,c];
FinPara
FinPara

Escribir "*****MATRIZ SUMA*****";


Para f<-0 Hasta fil-1 con paso 1 Hacer
Para c<-0 Hasta col-1 con paso 1 Hacer
Escribir Sin Saltar MSUMA[f,c], " ";
FinPara
Escribir "";
FinPara
FinProceso

9
Unidad V: Arreglos Bidimensionales

EJERCICIOS PROPUESTOS:

1. Pseudocdigo y programa en C que lee un array de N*M elementos y que guarda


0 en las posiciones pares y 1 en las posiciones impares. Imprimir el array
resultante.

2. Realice un pseudocdigo que declare y lea un arreglo bidimensional de N*M


elementos, imprimir la suma de los nmeros pares y el producto de los nmeros
impares de la matriz.

3. Pseudocdigo que imprime la suma de cada una de las columnas de una matriz
bidimensional N*M.

4. Pseudocdigo que imprime cul es el elemento mayor y menor de cada una de


las filas de una matriz bidimensional N*M.

5. Realice un pseudocdigo que calcule e imprima la transpuesta de una matriz. La


transpuesta de una matriz se obtiene al escribir las filas de la matriz como
columnas y las columnas como filas.

6. A la clase de Lgica de Programacin asiste un grupo de N alumnos. El profesor


de dicha asignatura aplica 3 exmenes. Realice un pseudocdigo que genere el
array de N alumnos y sus 3 calificaciones y que calcule e imprima:
El promedio de calificaciones de cada alumno.
El promedio general del grupo.
El nmero del estudiante que tuvo el mayor promedio de calificacin.

7. Realice un pseudocdigo que al recibir como datos dos arreglos


bidimensionales enteros, calcule la suma del arreglo 1 ms la traspuesta de
arreglo 2 y almacene el resultado en otro arreglo bidimensional.

10