|
Bienvenido a mis Tutorías
©
en la UNED
Exámenes |
|||
![]() |
Programación I, 2ª Semana, Febrero 2001:
Test
|
||
|
Programación I, 2ª Semana, Febrero 2001:
Ejercicio Práctico
Dada una tabla de hasta 10 puntos en el plano (x,y). Realizar un tipo
abstracto de dato con las operaciones siguientes:
DEFINITION MODULE Exam;
TYPE
TipoPunto=RECORD
x,y:REAL
END;
TipoIndice=[0..9];
TipoTabla=ARRAY TipoIndice OF TipoPunto;
PROCEDURE Coincide(t:TipoTabla):TipoIndice;
PROCEDURE Suma(t:TipoTabla;p1,p2:TipoIndice):REAL;
PROCEDURE Poligono(t:TipoTabla):REAL;
END Exam.
IMPLEMENTATION MODULE Exam;
From MathLib0 IMPORT sqrt;
PROCEDURE Longitud(pto1,pto2:TipoPunto):REAL;
BEGIN
RETURN sqrt((pto2.x-pto1.x)*(pto2.x-pto1.x)+
(pto2.y-pto1.y)*(pto2.y-pto1.y));
END Longitud;
PROCEDURE Coincide(t:TipoTabla):TipoIndice;
VAR encontrado:BOOLEAN;
p:TipoIndice;
BEGIN
encontrado:=FALSE; p:=HIGH(t);
WHILE (p>0) OR (NOT encontrado) DO
encontrado:=(t[0].x=t[p].x) AND (t[0].y=t[p].y);
DEC(p)
END;
RETURN p+1;
END Coincide;
PROCEDURE Suma(t:TipoTabla;p1,p2:TipoIndice):REAL;
VAR suma:REAL;
i:TipoIndice;
BEGIN
suma:=0;
FOR i:=p1 TO p2-1 DO
suma:=suma+Longitud(t[i],t[i+1]);
END;
RETURN suma;
END Suma;
PROCEDURE Poligono(t:TipoTabla):REAL;
VAR posi:TipoIndice;
perimetro:REAL;
BEGIN
posi:=Coincide(t);
perimetro:=Suma(t,0,posi);
RETURN perimetro;
END Poligono;
END Exam.
© tomytron | |||
|
No dudes en escribir si tienes alguna duda sobre estos ejercicios
abello |