10
ARREGLO UNIDAD V: OS BIDIMENSIO ONALES

UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Embed Size (px)

Citation preview

Page 1: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

ARREGLOS

UNIDAD V: ARREGLOS BIDIMENSIONALESDIMENSIONALES

Page 2: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

2

UNIDAD V: ARREGLOS BIDIMENSIONALES

1.1 GENERALIDADES: Las matrices son 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 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 múltiples filas y múltiples columnas. Gráficamente 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 número 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 número de fila y su número de columna (fila, columna). 1.2 DECLARACIÓN DE ARRAYS BIDIMENSIONALES El espacio que los arreglos ocupan en memoria se reserva en el momento de realizar la declaración de los mismos. La sintaxis para la declaración de un array de dos dimensiones es:

Dimension nombre_arreglo[numero_filas,numero_columnas]; Ejemplos de declaración 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

Page 3: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

3

1.3 INICIALIZACIÓN 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: Pseudocódigo para inicializar un arreglo de 2 filas y 3 columnas a 0.

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 asignación directa de valores a los elementos es: • Inserción de elementos: <Nombre array> [índice_fila,índice_columna] = valor elemento; • Extracción de elementos: <Variable> = <nombre array>[índice_fila,índice_columna];

Solución #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

Page 4: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

4

Ejemplo 2: Escribir un pseudocódigo que lea una matriz de N filas y M columnas de valores enteros. A continuación, debe pedir el número de una fila (Recuerde validar dicho dato). El pseudocódigo 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

Page 5: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

5

Ejemplo 3: Pseudocódigo que rellene automáticamente 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.

Solución #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]; //Declaración de la matriz Para f<-0 Hasta (fil-1) Hacer Para c<-0 Hasta (col-1) Hacer sumind[f,c]<-f+c; FinPara FinPara //Impresión 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

Page 6: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

6

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

Solución #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]; // Declaración 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

Page 7: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

7

Ejemplo #5: Pseudocódigo 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.

Solución #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

Page 8: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

8

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

Solución #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

Page 9: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

9

Ejemplo #7: Pseudocódigo 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.

Solución #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

Page 10: UNIDAD V: ARREGLOS BIDIMENSIONALES · PDF fileLas matrices son una colección finita, ... Arreglos Bidimensionales 3 ... array de N alumnos y sus 3 calificaciones y que calcule e imprima:

Unidad V: Arreglos Bidimensionales

10

EJERCICIOS PROPUESTOS:

1. Pseudocódigo 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 pseudocódigo que declare y lea un arreglo bidimensional de N*M elementos, imprimir la suma de los números pares y el producto de los números impares de la matriz.

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

4. Pseudocódigo que imprime cuál es el elemento mayor y menor de cada una de

las filas de una matriz bidimensional N*M.

5. Realice un pseudocódigo 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 Lógica de Programación asiste un grupo de N alumnos. El profesor

de dicha asignatura aplica 3 exámenes. Realice un pseudocódigo 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 número del estudiante que tuvo el mayor promedio de calificación.

7. Realice un pseudocódigo que al recibir como datos dos arreglos bidimensionales enteros, calcule la suma del arreglo 1 más la traspuesta de arreglo 2 y almacene el resultado en otro arreglo bidimensional.