![]() |
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 ![]() |