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

Examen #1 [solución]

Duración: dos horas. Lea bien el examen antes de hacerlo. Puede hacer el 
examen con lápiz. El examen es a libro abierto.

                        ¡ESCOGA 3 DE LAS 4 PREGUNTAS!

1) [33 pts] Implemente el procedimiento Mezclador(F,G,H,BOOL) que intercala 
renglón por renglón al archivo F : TEXT con el archivo G : TEXT.
- Si BOOL=TRUE entonces entonces siempre pone el renglón más grande de 
  primero. De los contrario pone primero al más pequeño.
- El resultado queda en el archivo H : TEXT.

                  F                                    G
       +--------------------------+      +--------------------------+
       | 1) 123456.123456.123456. |      | 1) abcdef.abcdef.        |
       | 2) 123456.               |      | 2) abcdef.               |
       | 3) 123456.123456.        |      | 3) abcdef.abcdef.abcdef. |
       +--------------------------+      | 4) fin uno               |
                                         | 5) fin dos               |
                                         +--------------------------+

        H <= Mezclador(F,G,H,TRUE)        H <= Mezclador(F,G,H,FALSE)
       +--------------------------+      +--------------------------+
       | 1) 123456.123456.123456. |      | 1) abcdef.abcdef.        |
       | 1) abcdef.abcdef.        |      | 1) 123456.123456.123456. |
       | 2) 123456.               |      | 2) 123456.               |
       | 2) abcdef.               |      | 2) abcdef.               |
       | 3) abcdef.abcdef.abcdef. |      | 3) 123456.123456.        |
       | 3) 123456.123456.        |      | 3) abcdef.abcdef.abcdef. |
       | 4) fin uno               |      | 4) fin uno               |
       | 5) fin dos               |      | 5) fin dos               |
       +--------------------------+      +--------------------------+

2) [33 pts] Considere el siguiente programa:

PROGRAM FORIF;
VAR
  i, ln: INTEGER;
BEGIN { FORIF }
  ln := 0;
  FOR i := (5 MOD 4) TO (555 DIV 11) DO BEGIN
    IF (i MOD 7) = 3 THEN BEGIN
      Write('  ==> ', i:2); ln := ln+1;
      IF ln=3 THEN BEGIN
        WriteLn; ln := 0;
      END;
    END;
  END;
END.  { FORIF }

2.a [11 pts] Indique cuál es el rango que recorre la variable "i" en el FOR.
2.b [11 pts] Explique para qué sirve la variable "ln".
2.c [11 pts] Muestre cuál es el resultado de ejecutar este programa.

3) [33 pts] Implemente el procedimiento Ordene2():

TYPE
  TArray = ARRAY [1..600] OF CHAR;

PROCEDURE Ordene2(
  {+}     n : INTEGER;
  {?} VAR A : TArray
);
{ RESULTADO
  Ordena los 2*n primeros valores del vector A[] en parejas de letras. }
{ EJEMPLO
  n = 4, A = [z,a, a,z, b,d, b,h]   ==>   A = [a,z, b,d, b,h, z,a]
  n = 3, A = [a,b, a,a, a,c]        ==>   A = [a,a, a,b, a,c]     }


4) [33 pts] Implemente la operación TPico.EsPico() que retorna TRUE si los 
valores almacenados en _m[] son tales que los de la fila y columna centrales 
son estrictamente mayores a todos los demás. Cuando la matriz no tiene un 
número impar de filas siempre retorna FALSE.
                                                1 1 6 1 1  
   .|.      0 1 0              1 2 1            2 2 6 2 2         
   -+-      1 1 1              2 3 2            3 3 6 3 3
   .|.      0 1 0              1 2 1            4 4 6 4 4
                                                5 5 6 5 5
          EsPico()=TRUE     EsPico()=TRUE
                                             EsPico()=FALSE
             3 2 3
             0 3 0              0 1
             4 0 0              2 3                -1

          EsPico()=FALSE    EsPico()=FALSE   EsPico()=TRUE

     Use el objeto TPico, parte de cuya definición es la siguiente:

CONST
  Tsize = 200;

TYPE
  TPico = OBJECT
    PRIVATE
      _m : ARRAY[1..Tsize,1..Tsize] OF INTEGER; { matriz del pico }
      _n : WORD                                 { tamaño de _m[]  }
    PUBLIC
      ... etc ...
      FUNCTION  EsPico : BOOLEAN;
  END; { TPico }




Soluciones

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