![]() |
Bienvenido a mis Tutorías
©
en la UNED
Exámenes |
![]() |
Programación I
2ª Semana, Febrero 2002:
|
Programación I, 2ª Semana, Febrero 2002:
Ejercicio Práctico Construir un TAD (Tipo Abstracto de Datos) capaz de contener una figura como la del ejemplo en una cuadrícula de dimensión 3x3. El TAD dispondrá únicamente de los procedimientos RotarFigura e InvertirFigura, que transformarán la figura que reciban de entrada según se describe en el siguiente ejemplo: ORIGINAL ROTADA INVERTIDA a b - - - a - b a - c - d c b - c - - d e e - - e d - DEFINITION MODULE ModFig; CONST MAX = 3; (* tamaño de la matriz *) TYPE Dim = [1..MAX]; TipoFig = ARRAY Dim, Dim OF CHAR; PROCEDURE RotarFigura( VAR fig :TipoFig); (*======================================================================= Transforma la matriz fig de forma que el elemento (i,j) pase a ocupar la posición (j , MAX-i+1). ========================================================================*) PROCEDURE InvertirFigura( VAR fig :TipoFig); (*======================================================================= Transforma la matriz fig de forma que el elemento (i,j) pase a ocupar la posición (i , MAX-j+1). ========================================================================*) END ModFig. IMPLEMENTATION MODULE ModFig; PROCEDURE RotarFigura( VAR fig :TipoFig); (*======================================================================= Transforma la matriz fig de forma que el elemento (i,j) pase a ocupar la posición (j , MAX-i+1). ========================================================================*) VAR fila, colum : Dim; (* índices que recorren la matriz *) figAux : TipoFig; BEGIN (*-- Obtener la figura rotada en la matriz auxiliar --*) FOR fila:=1 TO MAX DO FOR colum:=1 TO MAX DO figAux[fila, colum] := fig[colum, MAX-fila+1]; (*GIRO HORARIO de 90º*) END; END; (*-- Copiar en la matriz pasada por referencia la matriz rotada --*) fig:=figAux; END RotarFigura; PROCEDURE InvertirFigura( VAR fig :TipoFig); (*======================================================================= Transforma la matriz fig de forma que el elemento (i,j) pase a ocupar la posición (i , MAX-j+1). ========================================================================*) VAR fila, colum : Dim; (* índices que recorren la matriz *) figAux : TipoFig; BEGIN (*-- Obtener la figura invertida en la matriz auxiliar --*) FOR fila:=1 TO MAX DO FOR colum:=1 TO MAX DO figAux[fila, colum] := fig[fila, MAX-colum+1]; (*CAMBIO*) END; END; (*-- Copiar en la matriz pasada por referencia la matriz invertida --*) fig:=figAux; END InvertirFigura; END ModFig. |
|
No dudes en escribir si tienes alguna duda sobre estos ejercicios
![]() abello ![]() |