Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-0202
II Semestre 2014
[<=] [home] [<>] [\/] [=>]
CI-0202 Principios de Informática

Examen Final [solución]

      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 solo tres de las preguntas. ¡No haga más de lo que se le pide!

 

1) [33 pts] Existen mucho algoritmos que funcionan mejor si se aplican a matrices cuadradas que se tienen sus valores por bandas. Estas son algunas de esas matrices:
                1 2 3 0 0 0                 1 2 3 0 0
 1  2  0  0     0 2 3 0 0 0      1 0 0      2 1 2 3 0
-2  1  2  0     0 4 1 0 0 0      0 1 0      0 2 1 2 3
 0 -2  1  2     0 0 5 1 0 0      0 0 1      0 0 2 1 2
 0  0 -2  1     0 0 0 0 1 0                 0 0 0 2 1
                0 0 0 0 3 9

      La primera es una matriz 4x4 que tiene una banda de 2 sub-diagonales de ancho. La primera sub-diagonal es la diagonal de la matriz (que tiene valores "1"), y la segunda es la que está inmediatamente arriba de la diagonal (formada de los valores "2"). Como segunda sub-diagonal también se cuenta a la que está debajo de la diagonal principal (formada de los valores "-2").

      La cuarta matriz es una matriz de dimensión 5x5, y su caso es un poco diferente, pues es una matriz que tiene bandas de ancho 3. Aunque su última sub- diagonal hacia abajo es la formada por los doces ("2"), tiene una tercera sub-diagonal hacia arriba formada por los valores "3". Por eso su ancho de banda es "3" (y NO es "2").

      El ancho de banda de la matriz identidad es "1", porque sólo tiene valores diferentes de cero en la diagonal. Una matriz llena de ceros tendrá ancho de banda "0".

1.a) [4 pts] Escriba la declaración de la clase Matriz_Cuadrada, e incluya al método anchoBanda(). Haga las cosas de forma que la dimensión de su matriz puede variar en el rango [1..MaxDim].

1.b) [5 pts] Especifique el método Matriz_Cuadrada.anchoBanda() que retorna el tamaño de la banda más ancha de la matriz. Note que en el caso peor anchoBanda() retornará "n", la dimensión de la matriz, que ocurre cuando la matriz no contiene un triángulo inferior y otro superior lleno de ceros ("0"). [Sugerencia: Calcule el tamaño del triángulo de ceros inferior y superior de la matriz].

1.c) [24 pts] Implemente Matriz_Cuadrada.anchoBanda().

 

2) [33 pts] Una dirección internet [URL] contiene letras, dígitos y los caracteres { '.' '-' '_' '/' ':' '(' ')' '&' '+' } que están después de la hilera "http://". Escriba un programa completo que lea un archivo de texto y grabe con System.out.print(), en renglones aparte, únicamente aquellas parejas de direcciones internet que aparecen juntas en el mismo renglón pero separadas por algún caracter. Suponga que cuenta con el método estático saqueHttp(str,n) que retorna un número que indica adonde comienza la n-ésima dirección internet que parece en una hilera (o str.length() si no hay otra). Después de ejecutar su programa se obtendría un resultado similar al siguiente:
http://www.ucr.ac.cr <--> http://ecci.ucr.ac.cr
http://mail.google.com <--> http://mail.yahoo.com

 

3) [33 pts] ProductoMorboso() no sirve para determinar si algún renglón de la matriz es factor de otro.

3.a) [4 pts] Declare la clase Matriz con los métodos que necesite para implementar ProductoMorboso(). No olvide declarar los campos de la clase.

3.b) [11 pts] Especifique el método ProductoMorboso() debe retornar un ArrayList<> de valores numéricos que contiene todos los productos que no son nulos. Para calcularlos se multiplican los valores que están en el renglón impar por los correspondientes valores del siguiente renglón par de la matriz, pero se van sumando y restando hasta el final.

[3] →  0    11   23    5    8   13   21    34    55    89     1   44
[4] →  0    92   23   37    2    0   36    85    47    75    80    7
      --- ----- ---- ---- ---- --------- ------ ----- ----- ---- ----
[*] →  0  1012  529   185  16    0  756   2890  2585   6675  80   308    Productos
+/- →  0 -1012  529  -185  16    0  756  -2890  2585  -6675  80  -308   -7104 → Total

3.c) [18 pts] Implemente el método Matriz.ProductoMorboso().

 

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2014
Derechos de autor reservados © 2014
[home] <> [/\]