Examen Parcial - 75.41. Algoritmos y Programación II

Cátedra: ¿Mandrafina?
Fecha: Primera Oportunidad - Primer Cuatrimestre 2001
Día: 08/05/2001
Tema: 2

Esta página está incompleta; podés ayudar completando el material.

Enunciado

Punto I

Dado el siguiente procedimiento recursivo:

Procedure IMPRYPERM(X,Y,Z:char; N: integer);
Begin
     if N > 0 then begin
         Write(Z);
         IMPRYPERM(Y,Z,X,N-1);
         Write(X);
         IMPRYPERM(Z,X,Y,N-2);
         Write(Y)
      End
End;

Mostrar la salida producida para las siguientes llamadas:

  1. IMPRYPERM('A','B','C',2);
  2. IMPRYPERM('A','B','C',4);

Punto II

Dadas las siguientes declaraciones en Pascal desarrollar las tablas como lo haría el compilador:

registro = record
A: integer;
B: boolean;
C: real;
case tipo: char of
   X: (D:array[1..5,1..15] of char;e:1..100;F:boolean);
   Y: (G: packed_array[1..20] pf char; H: integer);
   Z: (I: array[1..30] of char; J: integer);
end;
 
var R1,R2: registro;
registros: array[1..20] of registro;

Y suponiendo que la tabla de variables del programa se carga en la posición 100 de la memoria, decir cómo resuelve en tiempo de ejecución la dirección de memoria donde se realiza la asignación:

R1.D[2,10] = 'T'

Punto III

Mostrar con diagramas lo que escribe el siguiente segmento de código:

type Puntero = ^nodo;
Nodo = record
    info: char;
    arriba,abajo: puntero
end;
 
var p,q,r: puntero;
 
Begin
    new(p);
    new(q);
    new(r);
    p^.info:='B';
    p^.abajo:=q;
    q^.abajo:=r;
    q^.info:='C';
    r^.info:='D';
    r^.abajo:=p;
    r^.arriba:=q;
    q^.arriba:=p;
    p^.arriba:=r;
    p^.abajo^.abajo:=p;
    q^.info:=q^.abajo^.info;
    p:=q;
    p^.arriba^.info:='A';
    writeln(p^.info;q^.info;r^.info);
End.

Resolución

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
materias/75/41/parcial_002_20010508_2.txt · Última modificación: 2006/10/14 15:30 por mariano
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki