Universidad de Costa Rica
|
|
Duración: Ciento veinte minutos. 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. Puede hacer el examen con lápiz. Resuelva las tres preguntas. ¡No haga más de lo que se le pide!
1) [33 pts] Considere la rutina
bajadora(a,b)
que retorna un
número y cuya implementación se muestra en la
figura.
public static int bajadora( int a, int b ) { System.out.print( "(" + a + "," + b + ")\n" ); if ( a > 0 ) { int conA = bajadora( a-1,b ); conA = conA+1; return conA; } else if ( b > 0 ) { int conB = bajadora( a,b-1 ); conB = conB+1; return conB; } else { return 0; } } |
1.a) [24 pts]
Muestre los registros de activación como cajitas
Jeliot para los
llamados si la invocación inicial de la rutina es
bajadora(2,1)
. También muestre el valor
retornado al terminar cada invocación.
1.b) [6 pts]
Muestre los valores que graba bajadora(1,3)
.
1.c) [3 pts] Diga qué hace esta rutina y sugiera una forma más directa de hacer lo mismo.
1.d) [0 pts]
Muestre los valores que graba bajadora(-3,-4)
.
2) [33 pts] El método estático "
escalereado()
" de la
clase "Biblio
" recibe un número e imprime una
escalera descendente de valores hasta el valor que corresponde al
número, de manera que la base tenga relación con el
valor de entrada.
[2] |
[3] |
[4] |
1 2 3 |
1 2 3 4 5 6 |
1 2 3 4 5 6 7 8 9 10 |
2.a) [11 pts]
Escriba la
especificación completa de "escalereado()
".
2.b) [22 pts]
Implemente "escalereado()
".
3) [33 pts] El método "
matador(i,j)
" de la clase
Matrix
toma el valor actual de la matriz y
construye una nueva matriz en la que ya no están ni la fila
"i
" ni la columna "j
" de la matriz
original.
public class Matrix { private int m_MAT[][]; // referencia a la matriz public Matrix( int N , int M ) { /* ... */ } public Matrix matador( int i , int j ) { /* ... */ } public int fil(); // Cantidad de filas public int col(); // Cantidad de columnas } | |
B[4x5] ___ / 0 1 | 4 | 5 0 \ [1] | 4__4_|_4_|_4__4 | | 0 3 | 4 | 8 7 | \ 0 8 |_4_| 1 2 / [2] |
RES = B.matador(1,2) / 0 1 5 0 \ | 0 3 8 7 | \ 0 8 1 2 / |
3.a) [11 pts]
Especifique
"Matrix.matador(i,j)
". Note que este método
crea y retorna una nueva matriz en cada invocación.
3.b) [22 pts]
Implemente "matador(i,j)
".
3.c) [0 pts] Dibuje el diagrama que muestre cómo se vería esta matriz si el programa fuera ejecutado con Jeliot.
Adolfo Di Mare <adolfo@di-mare.com>.
|