Universidad de Costa Rica
|
|
Duración: dos horas. Lea bien el examen antes de hacerlo. El examen es a libro abierto. Cuenta la documentación. Cuenta la redacción y la ortografía. Cuentan las convenciones. Puede hacer el examen con lápiz. ¡No haga más de lo que se le pide! ¡ESCOGA 3 DE LAS 4 PREGUNTAS! 1) [25 pts] Palabras( s : STRING ) : WORD; es una función que retorna el número de palabras que contiene la hilera "s". Una palabra es una secuencia de uno o más caracteres consecutivos pero todos diferentes de blanco. Especifique y programe la función Palabras(). Palabras(' el bananazo es ;muy; largo ') ==> 5; Palabras(' ; ; ; ; ; ; siete; ocho; 9 ') ==> 9; Palabras('') ==> 0; Palabras(' ') ==> 0; 2) [25 pts] Palindromo( S: STRING ) : BOOLEAN; es la función que retorna TRUE si la hilera "s" se lee igual a la derecha que a la izquierda, pero omitiendo blancos. Especifique y programe la función Palindromo(). Palindromo('radar') ==> TRUE; Palindromo('Dabale arroz a la Zorra el Abad') ==> TRUE; Palindromo('rabanote') ==> FALSE; Palindromo('1 23 45 43 2 1') ==> TRUE; Palindromo('como moco') ==> FALSE; Palindromo('como omoc') ==> TRUE; 3) [25 pts] Al ser contratado por RemaTEX para ayudar en la construcción de un Sistema Integral de Construcción de Vivienda popular, usted se ve en la obligación de usar el objeto TTecho, parte de cuya definición es la siguiente: CONST Tsize = 200; TYPE TTecho = OBJECT PRIVATE _m: ARRAY[1..Tsize,1..Tsize] OF INTEGER; { matriz del techo } _n : WORD; { tamaño de _m[] } PUBLIC PROCEDURE Init; { Constructor } PROCEDURE Clear; PROCEDURE Done; { Destructor } ... etc ... FUNCTION EsTecho : BOOLEAN; END; { TTecho } Su misión es implementar la operación TTecho.EsTecho() que retorna TRUE si los valores almacenados en _m[] son tales que los de la diagonal transversa son estrictamente mayores a los que no están en la diagonal transversa. ../ \.. diagonal transversa ==> ./. diagonal ==> .\. /.. ..\ 1 2 3 1 2 3 4 0 1 0 3 0 2 3 4 1 2 0 4 0 0 3 4 1 2 4 1 2 3 1 EsTecho()=TRUE EsTecho()=TRUE EsTecho()=TRUE -> 3 2 3 -> 5 2 3 4 0 1 0 3 0 2 3 4 1 2 3 <- 4 0 0 3 4 1 2 4 1 2 3 EsTecho()=FALSE EsTecho()=FALSE EsTecho()=FALSE 4) [25 pts] Al ser contratado por Sega para programar un VideoJuego muy violento usted se ve en la obligación de usar el objeto TBazooka, parte de cuya definición es la siguiente: CONST BKsize = 200; TYPE TBazooka = OBJECT PRIVATE _l : ARRAY[1..BKsize] OF INTEGER; { adonde dispara } _n : WORD; { tamaño de _l[] } PUBLIC PROCEDURE Init; { Constructor } PROCEDURE Clear; PROCEDURE Done; { Destructor } ... etc ... FUNCTION Explota : BOOLEAN; END; { TBazooka } Su misión es implementar la operación TBazooka.Explota() que retorna TRUE si los valores almacenados en _l[] forman una secuencia primero ascendente y luego descendente, como se muestra en la siguiente tabla: b1 = (1,2,3,2,1) ==> b1.Explota = TRUE; b2 = (1,3,5,6,7,6) ==> b2.Explota = TRUE; b3 = (1,7,7,7,7,6) ==> b3.Explota = TRUE; b4 = (1,2,3) ==> b4.Explota = FALSE; b5 = (1,3,5,6,7,7) ==> b5.Explota = FALSE; b6 = (1,3,5,6,5,6) ==> b6.Explota = FALSE;
Duración: dos horas. Lea bien el examen antes de hacerlo. El examen es a libro abierto. Cuenta la documentación. Cuenta la redacción y la ortografía. Cuentan las convenciones. Puede hacer el examen con lápiz. ¡No haga más de lo que se le pide! ¡ESCOGA 3 DE LAS 4 PREGUNTAS! 1) [25 pts] QuitaBlancos( s : STRING ) : STRING; es una función que retorna la hilera que se obtiene al eliminar los blancos que aparecen consecutivos en la hilera "s". Especifique y programe la función QuitaBlancos(). QuitaBlancos(' bombino limponio ') ==> ' bombino limponio ' QuitaBlancos(' ') ==> ' ' QuitaBlancos(' a b c d ') ==> ' a b c d ' 2) [25 pts] Kletras( s : STRING; k : WORD) : BOOLEAN; es una función que retorna TRUE si la hilera "s" tiene "k" o menos letras diferentes. Especifique y programe la función Kletras(). [Sugerencia: use System.Pos()]. Kletras('banana', 3) ==> TRUE; Kletras('piloto', 2) ==> FALSE; Kletras('aaaaaa', 0) ==> FALSE; Kletras('jupazo', 6) ==> TRUE; 3) [25 pts] Al ser contratado por RemaTEX para ayudar en la construcción de un Sistema Integral de Construcción de Vivienda popular, usted se ve en la obligación de usar el objeto TTecho, parte de cuya definición es la siguiente: CONST Tsize = 200; TYPE TTecho = OBJECT PRIVATE _m: ARRAY[1..Tsize,1..Tsize] OF INTEGER; { matriz del techo } _n : WORD; { tamaño de _m[] } PUBLIC PROCEDURE Init; { Constructor } PROCEDURE Clear; PROCEDURE Done; { Destructor } ... etc ... FUNCTION EsTecho : BOOLEAN; END; { TTecho } Su misión es implementar la operación TTecho.EsTecho() que retorna TRUE si los valores almacenados en _m[] son tales que los de la diagonal transversa son estrictamente mayores a los que no están en la diagonal transversa. ../ \.. diagonal transversa ==> ./. diagonal ==> .\. /.. ..\ 1 2 3 1 2 3 4 0 1 0 3 0 2 3 4 1 2 0 4 0 0 3 4 1 2 4 1 2 3 1 EsTecho()=TRUE EsTecho()=TRUE EsTecho()=TRUE -> 3 2 3 -> 5 2 3 4 0 1 0 3 0 2 3 4 1 2 3 <- 4 0 0 3 4 1 2 4 1 2 3 1 EsTecho()=FALSE EsTecho()=FALSE EsTecho()=FALSE 4) [25 pts] Al ser contratado por SeaQuest para ayudar en la destrucción de un habitat de tiburones asesinos usted se ve en la obligación de usar el objeto TOceano, parte de cuya definición es la siguiente: CONST TOc = 200; TYPE TOceano = OBJECT PRIVATE _m: ARRAY[1..TOc,1..TOc] OF INTEGER; { matriz del océano } _n : WORD; { tamaño de _m[] } PUBLIC PROCEDURE Init; { Constructor } PROCEDURE Clear; PROCEDURE Done; { Destructor } ... etc ... FUNCTION Gordura(i,j: INTEGER): INTEGER; END; { TOceano } Su misión es implementar la operación TOceano.Gordura(i,j) que retorna el número de celdas con comida aledañas a la celda que está en el océano en la posición [i,j]. La cantida de comida de cada celda es el número almacenado en ella. 0 1 0 0 1 Gordura(1,5) = 1 1 2 0 0 1 Gordura(5,1) = 0 0 0 1 3 0 Gordura(4,4) = 8 0 0 0 1 3 Gordura(3,4) = 6 0 0 1 0 0 Gordura(2,5) = 4
Adolfo Di Mare <adolfo@di-mare.com>.
|