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

Examen #1 [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 todas las preguntas. ¡No haga más de lo que se le pide!

 

1) [33 pts] La ventaja de las hileras Java es que funcionan como vectores porque tienen el método String.length() que sirve para determinar su longitud y el método String.charAt(i) que retorna una copia del i-ésimo caracter de la hilera. Por ejemplo, la cuarta letra de la hilera "abcde" es 'e' pues la numeración de las letras de la hilera comienza con el cero, como ocurre con los elementos de un vector.
{
    String r = "abcde";
    assertTrue( r.charAt(0) == 'a' );
    assertTrue( r.charAt(1) == 'b' );
    assertTrue( r.charAt(4) == 'e' );
    assertTrue( r.charAt(r.length()-1) == 'e' );
}
{
    assertTrue(  estanBrincados( "p1q1r1s" ) );       // p-q-r-s
    assertTrue(  estanBrincados( "h3k" ) );           // h-.-.-k
    assertTrue(  estanBrincados( "a1b3e0e0e4i1j" ) ); // 0 sí se vale

    assertFalse( estanBrincados( "a1c" ) );   // a1b
    assertFalse( estanBrincados( "AB1C" ) );  // A?B1C
    assertFalse( estanBrincados( "xyz" ) );   // x?y?z
}

1.a) [5 pts] Especifique el método estático estanBrincados() que sirve para determinar si en una hilera Java cada letra está a una distancia predefinida desde la letra anterior. Por ejemplo, para que aparezca primero la 'h' y luego la 'k' es necesario que entre esas 2 letras esté el dígito '3': "h3k". Los caracteres de la hilera "h3k" sí están brincados porque a partir de la 'h' hay que brincar 3 veces para llegar a la 'k': { 'h''i''j''k' }. Para que estanBrincados() retorne verdadero siempre es necesario que los caracteres de la hilera estén en secuencia perfecta caracter-digito-caracter: "a1b3e0e0e4i1j".

1.b) [18 pts] Implemente estanBrincados( char V[] ) que determina si un vector de letras (char) tiene bien brincados todos sus valores, como ocurre con los vectores que contienen los valores {'a','1','b'} y {'h','3','k','2','m'}.

1.c) [10 pts] Use su implementación de estanBrincados( char V[] ) para obtener la implementación de estanBrincados( String ) (que recibe una hilera, no un vector de letras).

 

2) [33 pts] Escriba un programa completo que lea números enteros y grabe con System.out.print() en renglones aparte únicamente aquellos números subidores. Por ejemplo, si la entrada contiene los siguientes números:
 131  1516 1718 1920 2112  23 2425 2627
 12 897 575 889 774 135 8556 5789
 3  78 3 23
su programa solo grabaría los siguientes números que tienen dígitos consecutivos no decrecientes:
23
12
889
135
5789
3
78
3
23
(Si usa el método leeInt() no hace falta que lo copie de nuevo).

 

3) [33 pts]

[2(1)] [3(21)] [4(37)]
   3
 2 1 
       26
    25 24
 23 22 21 
          46
       45 44
    43 42 41
 40 39 38 37 

3.a) [7 pts] El método estático "Escalereado()" de la clase "Biblio" recibe dos números e imprime una escalera de varios peldaños a partir del segundo valor. Escriba la especificación completa de "Escalereado()".

3.b) [26 pts] Implemente "Escalereado()". En el ejemplo se muestra "Escalereado()" para los valores [2(1)], [3(21)] y [4(37)].

 

Soluciones

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