Sie sind auf Seite 1von 5

INTRODUCCIN A PROGRAMACIN PRCTICA 8 Objetivos

Presentar la forma de definir en Pascal el tipo de datos TABLA multidimensional, y resolver problemas en los que intervienen estas estructuras de datos. Utilizar los conceptos estudiados a lo largo de las prcticas anteriores, como: tratamiento secuencial, acciones, funciones y tipos de datos.

Tablas multidimensionales en Pascal


La definicin de tipos tabla multidimensional se realiza de forma muy semejante a la notacin empelada en teor a: entre los corc!etes en los que se establece el conjunto de ndices se ponen tantos intervalos separados por comas como dimensiones tenga el tipo tabla que se est definiendo: Notacin Pascal tabla_multi = TIPO TABLA [i1, s1; i2, s2] DE Tipo_Base;
tabla_multi = array [i1 .. s1, i2 .. s2] of Tipo_Base;

"l acceso a los elementos de una variable de tipo tabla multidimensional se !ace de forma similar a las tablas unidimensionales, es decir, mediante el uso de corc!etes, pero separando por comas los valores de los distintos ndices. Por ejemplo, si t fuese una variable de tipo tabla_multi, acceder amos a sus elementos mediante e#presiones tales como t[i, j], t[k+j, 2*j+1], etc$tera, suponiendo, claro, que las e#presiones anteriores fuesen del tipo ordinal adecuado al ndice correspondiente de la declaracin del tipo tabla y que sus valores estuviesen en el intervalo correcto. % continuacin se muestra la codificacin en Pascal del algoritmo &.'& del libro de te#to.
program Algoritmo6_16; (* Algoritmo 6.16. Suma de los valores mayores de cada fila de una matriz de enteros Capitulo 6. Tablas *) uses crt; const N = 20; NFilas = N; (* constante con el numero de filas *) NColumnas = N; (* constante con el numero de columnas *) type RangoFilas = 1..NFilas; RangoColumnas = 1..NColumnas; Matriz = array [RangoFilas, RangoColumnas] of integer; Matriz; i : RangoFilas; j : RangoColumnas; mayor: integer;

var t : nf, nc, sm,

procedure Leer_Tabla (var a : Matriz; nf : RangoFilas; nc : RangoColumnas); var i : RangoFilas; j : RangoColumnas; begin for i:=1 to nf do begin writeln; writeln ('Fila: ',i); for j:= 1 to nc do begin write ('Introduzca elemento (',i,', ', j,'): '); readln (a[i, j]) end end

end; begin

end.

clrscr; writeln ('*****'); writeln ('* Algoritmo 6.16: Sumar valores mayores de cada fila writeln ('* de una matriz de enteros writeln ('*****'); writeln; write ('Introduzca el numero de filas (<= ', NFilas,'): '); readln (nf); writeln; write ('Introduzca el numero de columnas (<= ', NColumnas, '): readln (nc); Leer_Tabla (t, nf, nc); sm := 0; for i := 1 to nf do begin mayor := t[i,1]; for j := 2 to nc do begin if mayor < t[i,j] then mayor := t[i,j] (* INV int: mayor = mayor de los j elementos ya recorridos la fila i, 1 <= j <= nc *) end; sm := sm + mayor (* INV ext: sm = suma de los mayores de las primeras i filas de T, 1 <= i <= nf *) end; (* INV ext: y (i = nf) => POST *) writeln; writeln ('La suma de los valores mayores de cada fila de'); writeln ('la matriz de enteros es: ', sm); writeln; write ('Pulse enter para continuar'); readln

*'); *');

');

de

Problema 1: (e dispone de los datos sobre el n)mero de alumnos que finalizaron la carrera en oc!o titulaciones de la Universidad de *urcia durante los a+os ',,- al .---. (e desea obtener las siguientes estad sticas: el a+o que ms alumnos terminaron la carrera, la titulacin que mayor n)mero de profesionales !a generado y la media de titulados por a+o.

/0u$ tipo de datos es el ms adecuado para representar esta informacin1 /"s necesario alg)n tipo de codificacin1 2ise+e el algoritmo e implem$ntelo en Pascal. 2ise+e una funcin que determine si en alguna titulacin el n)mero de egresados aumenta progresivamente en ese periodo de tiempo 3cada a+o terminan ms alumnos que el anterior4. La funcin debe devolver la primera titulacin que encuentre, si !ay alguna, o un valor no vlido 3por ejemplo, cero, si se codifica mediante un n)mero entero4 si no !ay ninguna que cumpla esa condicin. 2ebe detenerse el recorrido en cuanto una titulacin cumpla esa condicin.

Problema 2: Una imagen captada por una cmara digital en blanco y negro puede representarse como una matriz A de tama+o n m de n)meros enteros, donde n representa la resolucin vertical, m la resolucin !orizontal, y el valor aij es un n)mero proporcional a la intensidad luminosa captada en el punto de coordenadas 3i, j4. Una operacin t pica que se realiza con este tipo de imgenes es el suavizado para eliminar ruidos. Una forma de eliminar ruidos es promediar el valor de cada punto con el de sus ocho vecinos. "n la figura siguiente se muestra un punto gen$rico pij y sus oc!o vecinos:
p
i-1, j-1

i-1, j

i-1, j+ 1

i, j-1

i, j

i, j+ 1

i+ 1, j-1

i+ 1, j

i+ 1, j+ 1

a4 2efina el tipo de dato imagen digital 3supondremos que n y m son constantes conocidas4. b4 2efina la funcin Promediar que reciba como parmetro una imagen digital A del tipo anteriormente descrito, y devuelva como resultado la operacin de promedio anteriormente descrita, es decir, si C es la matriz que se obtiene al aplicar Promediar sobre A se debe cumplir que:

ci , j =

3 ai 1 , j 1 + a i 1 , j + a i 1 , j + 1 4 + 3 ai , j 1 + a i , j + ai , j + 1 4 + 3 a i + 1 , j 1 + a i + 1 , j + a i + 1 , j + 1 4 9

2ebe tenerse en cuenta que los puntos de los bordes y las esquinas no tienen oc!o vecinos sino menos. "n estos casos calcule el promedio con los puntos que en cada caso e#istan como vecinos 3cinco o tres4.

Trabajo personal
1. 2eseamos construir un peque+o programa de codificacin de te#tos, para ello vamos a utilizar una tabla de codificacin. La tabla ser una tabla bidimensional de seis por seis, en total 5& posiciones. "l ndice para las filas y las columnas es un rango de seis letras, y las 5& posiciones

contienen caracteres: .& letras del alfabeto ms diez d gitos. "sta tabla de codificacin slo ser a conocida por el emisor y el receptor autorizados. Por ejemplo: u v w x y z u b # y i z ' v a 7 f g t . w c v u ! s r x d e & 5 q y , 8 9 j ; p z 6 m l : n o

"l te#to a codificar contiene slo letras min)sculas y d gitos, sin blancos. Para codificar el te#to, cada carcter del te#to original se sustituye por los dos ndices 3fila, columna4 que definen su posicin en la tabla. Por ejemplo: mensaje10 <odificado se trasformar a en: vzwxyzywuvxywxzuux Implemente un programa en Pascal siguiendo estos pasos: 2efina los tipos de datos necesarios para almacenar la tabla de codificacin. =nicialice la tabla. =mplemente una funcin llamada Codificacin que tiene como parmetros de entrada: la tabla y un carcter, y como resultado: un par, que es la codificacin del carcter pasado en el parmetro. "n el programa principal, recorra una secuencia del primer modelo de acceso secuencial, S, que contiene letras y d gitos, codif quela, y almacene el resultado en otra secuencia, R, tambi$n del primer modelo. (i en la secuencia S aparecen caracteres que no estn incluidos en la tabla 3como puede ser una marca de fin de l nea4, el programa debe copiar ese carcter tal cual en la secuencia resultado.

2. %nalice el siguiente problema y escriba un programa en Pascal que lo resuelva: Una imagen digital es una matriz, o array bidimensional de n)meros. <ada celda de la matriz es un pxel. (i la imagen es en blanco y negro, un p #el es un valor entero entre - y .;; 3el nivel de gris4, si la imagen es en color, cada p #el consta de tres valores, enteros tambi$n, entre - y .;;: canal > 3rojo4, canal ? 3verde4, canal @ 3azul4.

R= 1%& !=# R= 20 !=1"# $= 1%

$= "#

(upongamos que tenemos tres secuencias de enteros del segundo modelo de acceso secuencial, cada una de ellas almacena el valor correspondiente a un color. "stas tres secuencias no tienen por qu$ tener la misma longitud: (ecuencia >: ';(ecuencia ?: '&6 (ecuencia @: ., ;& '5';9 '-., '&6 56 A A. ...

(e desea obtener una secuencia resultado formada de la siguiente manera: >',?',@', >.,?.,@.,>5,?5,@5, ........>n,?n,@n 2onde n, es la longitud de la secuencia ms corta de las secuencias dadas. <omo se puede observar, tres elementos consecutivos forman un Bp #el colorC. (ecuencia >es ';'&6 ., ;& '5';9 '-., '.6

2efina un tipo de dato imagen adecuado para almacenar una imagen digital en color de tama+o N M, donde N y M son constantes positivas conocidas. 2ise+e un algoritmo que, a partir de la secuencia obtenida en el apartado anterior, proporcione valores a una variable de tipo imagen. (uponga que en la secuencia resultado, Res, los datos de la imagen estn almacenados en orden de filas ascendentes y columnas ascendentes. (i faltan datos para completar la imagen se colocar el color blanco 3>D.;;, ?D.;;, @D.;;4 .

Das könnte Ihnen auch gefallen