AD1-Teoría

Anuncio
EXAMEN DE TEORÍA DE AD1 ( Algoritmos y Estructuras de Datos 1 )
27 de Enero de 2003. Convocatoria Ordinaria. Duración: 2 horas y cuarto
APELLIDOS:
Ejercicio 1. Dados c, variable de tipo carácter, y v, vector ordenado
ascendentemente de n caracteres, n≥1, se quiere diseñar un
algoritmo que indique si c está en v. Por ejemplo: sea c = ’A’;
entonces c NO está en el siguiente vector v:
v
1
2
3
4
5
6
7
‘a’
‘b’
‘c’
‘d’
‘d’
‘e’
‘f’
Nmax
............
Ahora bien, si c = ’d’ entonces c está en v.
A partir de este enunciado, se pide:
a) Marcar aquella de las siguientes definiciones que corresponda a
la definición del problema enunciado:
(1 punto)
X Definición 1:
algoritmo posC (Datos
v: vector[1..Nmax] de carácter;
n: entero; c: carácter;
Resultados esta: boolean);
P = {1 ≤ n ≤ Nmax∧∀i: 1 ≤i < n: v[i] ≤ v[i+1] }
Q = {esta= (∃pos: 1≤pos≤ nv[pos]=c∧
∧∀j: 1≤j<pos: v[j]<c
∧
∧ ∀j:pos≤j≤n: v[j]≥c ) ) }
Definición 2:
algoritmo posC (Datos
v: vector[1..Nmax] de carácter;
n: entero; c: carácter;
Resultados esta: boolean);
P = {1 ≤ n ≤ Nmax∧∀i: 1 ≤i < n: v[i] ≤ v[i+1]}
Q = {esta = (∃pos: 1≤pos≤ nv[pos]=c) }
1
CENTRO1:
NOMBRE:
Marcar con una X la casilla que interese.
EUI
FI
Definición 3:
algoritmo posC (Datos
v: vector[1..Nmax] de carácter;
c: carácter;
Resultados esta: boolean);
P = {1 ≤ n ≤ Nmax∧∀i: 1 ≤i < n: v[i] ≤ v[i+1] }
Q = {esta = (∃pos: 1≤pos≤ nv[pos]=c) }
b)
Marcar aquella de las siguientes estrategias, definidas por
Invariante y Función Limitadora, que sea eficiente para la correcta
resolución del problema enunciado:
(2 puntos)
X Estrategia 1:
I = {0 ≤ pos ≤ n ∧ ∀i: 1 ≤i < pos: v[i] < c
t = n - pos
Estrategia 2:
∧ esta = (∃j: 1 ≤ j ≤ pos v[j] ≥ c) }
I = {0 ≤ pos ≤ n ∧ ∀i: 1 ≤i < pos: v[i] ≠ c
t = n - pos
Estrategia 3:
∧ esta = (∃j: 1 ≤ j ≤ pos v[j] = c) }
I = {0 ≤ pos ≤ n ∧ ∀i: 1 ≤i < pos: v[i] < c
∧ esta = (v[pos] = c) }
t = n - pos
c)
En función de la estrategia elegida en el apartado b),
escríbanse la guarda de la iteración y las instrucciones de inicio,
finalización y cuerpo de la iteración:
(2 puntos)
Las instrucciones de inicio son:
pos := 0;
está := falso;
La guarda de la iteración B es:
( pos <> n ) ∧ ( ¬está )
El cuerpo de la iteración es:
pos := pos + 1;
si v[pos] >= c entonces esta := cierto;
fsi
Las instrucciones de terminación son:
si v[pos] = c entonces
sino
esta := cierto
esta := falso; fsi
Ejercicio 2. Dada la siguiente definición de problema:
algoritmo ejer2(Datos v: vector[1..Nmax]de entero; n: entero;
Resultados es: lógico);
P = { 0 ≤ n ≤ Nmax }
Q = { es =
∀i: 1 ≤
i ≤ n div 2: v[ i ] = v[ n – i + 1 ] }
falgoritmo
En base a esta definición se pide:
a)
Indicar qué problema describe esta definición: (0.5 puntos)
Comprobar si el vector v es capicúa. Nótese que si v es vacío,
entonces es capicúa
Si la estrategia elegida para resolver este problema viene dada por
los siguientes Invariante y Función Limitadora:
I = { 0 ≤ pos ≤ n div 2 ∧
∀i: 1 ≤
i ≤ (n div 2) – pos – 1: v[i] = v[n–i+1] ∧
diferente = (∃i: 1≤ i ≤(n div 2)–pos: v[i] ≠ v[n–i +1])}
t = pos
b)
Marcar aquella de las siguientes descripciones que
corresponda a la estrategia dada por los anteriores I, t: (0.5 puntos)
Descripción 1: Recorrido Ascendente.
X Descripción 2: Búsqueda Ascendente.
Descripción 3: Recorrido Descendente.
Descripción 4: Búsqueda Descendente.
c)
Marcar aquel de los siguientes valores igual al primer
v[pos] según la estrategia dada por los anteriores I, t: (0.5 puntos)
v[n]
X v[1]
v[n div 2]
d)
Rellenar las casillas que aparecen en el siguiente algoritmo
en base a la estrategia definida por los anteriores I, t: (1.5 puntos)
algoritmo ejer2(Datos v: vector[1..Nmax]de entero; n: entero;
Resultados es : lógico);
var diferente : lógico;
pos : entero
fvar
diferente := falso
; pos :=
n div 2
;
mientras pos
≥ 1
Y ¬diferente hacer
diferente := (v[(ndiv2) – pos + 1] <> v[n - (ndiv2) + pos] ) ;
pos :=
fmientras
pos - 1
es :=
¬ diferente
falgoritmo
;
;
Ejercicio 3. Dados los siguientes algoritmos parametrizados:
función f(x,y: entero) devuelve lógico;
var b: lógico fvar
∧ y=2
{ x=6
∧ b=¿?
}
∧ b= cierto
}
b := ((x-y) > 3) ;
∧ y=2
{ x=6
devuelve b;
ffunción
procedimiento p(ent a:lógico; ent b:entero; ent/sal x,y:entero);
{ a=cierto ∧ b=4
∧ x=@a(6)
si a entonces x := x + b;
sino
x := x - b;
fsi
{ a=cierto ∧ b=4
∧ y=@b(5) }
y := y - b
y := y + b;
∧ x=@a(10)
∧ y=@b(1) }
fprocedimiento
Se pide, dado el estado R0, completar el estado R1 obtenido tras la
invocación a p en el siguiente algoritmo. Además, complétense los
distintos estados que aparecen sombreados dentro de la función f y
el procedimiento p.
(2 puntos)
algoritmo ejer3(Datos x,y,a,b: entero; Resultados x,y,a,b: entero)
R0={ x=2
∧ y=4
∧ a=4
∧ b=5
∧ a=10
∧ b=1
}
a = x + y;
p(f(x+y, x), y, a, b);
R1={ x=2
falgoritmo
∧ y=4
}
Descargar