Documente Academic
Documente Profesional
Documente Cultură
Problema 1
Sean dos variables struct R1, R2. Se sabe que los m campos de R1 ocupan un espacio
de tamao L1 y los n campos de R2 ocupan un espacio de tamao L2. Suponer que el
compilador genera cdigo para representar ambas variables en forma contigua, R1 a
continuacin de R2.
a) Proponer frmulas para calcular los tamaos L1, L2 y L (correspondiente al espacio
total ocupado por ambas variables).
b) Si la direccin base de R2 es , proponer una frmula para acceder al i-simo campo de
R1.
c) Si se sabe, que el ltimo campo de R2 (de tamao 4) comienza en la direccin 13556 y
que los tamaos de los tres primeros campos de R1 son 12, 1 y 6, respectivamente,
determinar la direccin en la cual comienza el cuarto campo de R1.
Problema 2
Se sabe que el primer campo de una struct R, de n campos, tiene tamao 1 y que, a
partir del segundo, cada campo tiene el tamao del anterior incrementado en 1.
a) Desarrollar una frmula para acceder al i-simo campo de R.
b) Proponer una expresin para calcular el tamao de R.
c) Determinar la direccin de comienzo del centsimo primer campo de R, cuando n = 150
y la direccin base de su representacin en memoria es = 50505.
Problema 3
Con base en las definiciones
struct Nodo
{
Nodo *link;
}
typedef Nodo *Enlace;
struct Reg
{ float f;
Enlace e;
}
Reg R;
y en la sentencia
R.e = new Nodo;
a) Desarrollar una frmula para acceder al i-simo campo del nodo apuntado por R.e.
b) Si
struct Nodo
{ bool b;
// 1 byte
char c;
// 1 byte
int i;
// 2 bytes
Enlace d;
// 4 bytes
Nodo *link;
}
y R.e = 84206, utilizar la frmula desarrollada en el punto anterior para determinar la
direccin del ltimo campo del nodo apuntado por R.e.
Problema 4
1
Problema 8
Un arreglo tridimensional v se declara como
v : array[IP..SP,IF..SF,IC..SC] of <tipo>;
en lenguaje Pascal, y como
<tipo> v[P][F][C];
en lenguaje C.
a) Proponer una frmula para acceder al elemento v[i,j,k].
b) Proponer una frmula para acceder al elemento v[i][j][k].
SOLUCIONES
Problema 1
m
a) L1 =
k 1
L2 =
k 1
y L = L1 + L2 =
t
k 1
t
k 1
b) Dir(R1.Si) = + L2 +
k 1
a) Dir(R1.S4) = +
t
k 1
a) Dir(R.Si) = +
t
k 1
b) T =
k 1
k 1
i 1
tk = k =
c) Dir(R.S101) = 50505 +
= +
=+
k 1
(i 1)i
2
n( n 1)
2
101(100)
= 50505 + 5050 = 55555
2
Problema 3
i 1
a) Dir(R.e->Si) = +
t
k 1
3
b) Dir(R.e->S4) = +
t
k 1
a) Dir(v[k].Si) = + k*T +
T j
con T =
j 1
T
j 1
T
j 1
con T =
T
j 1
= 1 + 2 + 4 + 4 = 11
a) Dir(T[i, j]) = + (
(j ic)]*T
k 1
Problema 7
a) Dir(B[i,j) = + (i ic)*S + (j if)*T
con S = (sf - if + 1)*T
b) Dir(B[7,2) =
=
=
=
Problema 8
a) Dir(v[i,j,k) = + (i IP)*M + (j IF)*V + (k IC)*E
con
V = (SC IC + 1)*E
y
M = (SF IF + 1)*V
b) En este caso, IP = IF = IC = 0, SC = C 1 y SF = F 1
Luego, V = (C 1 0 + 1)*E
y
M = (F 1 0 + 1)*V
Por lo tanto
Dir(v[i][j][k) = + i*M + j*V + k*E
con
V = C*E
y
M = F*V