arreglos bidimensionales dimensionales

Anuncio
UNIDAD V:
ARREGLOS BIDIMENSIONALES
DIMENSIONALES
Unidad V: Arreglos Bidimensionales
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
2
Unidad V: Arreglos Bidimensionales
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.
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
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];
3
Unidad V: Arreglos Bidimensionales
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
4
Unidad V: Arreglos Bidimensionales
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
5
Unidad V: Arreglos Bidimensionales
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
6
Unidad V: Arreglos Bidimensionales
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
7
Unidad V: Arreglos Bidimensionales
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
8
Unidad V: Arreglos Bidimensionales
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
9
Unidad V: Arreglos Bidimensionales
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.
10
Descargar