Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
|
|
CI-1101 Programación I
Examen #1
[solución]
Versión #1
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;
Examen #1
[solución]
Versión #2
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
Soluciones
Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 1996
Derechos de autor reservados © 1996