IIT - Universidad Pontificia Comillas

Anuncio
UNIVERSIDAD PONTIFICIA COMILLAS
Escuela Técnica Superior de Ingeniería (ICAI)
Ingeniero en Informática
Programación I
12 de junio de 2006
Alumno/a:___________________________________________Grupo: 1ºA
Apartado 1. (1 punto). Indicar el resultado que producen sobre la pantalla los siguientes programas:
a)
a = 2.00
a = 7.00
a = 11.00
a = 14.00
a = 16.00
a = 17.00
a = 17.00
a = 16.00
a = 14.00
a = 11.00
a = 7.00
a = 2.00
!
"
!
##
"
%!
#
$$
&'
$$
( ) &
##
*
!
!
+
*
, 3++)
b)
!
- .+
,
!
!
/-0
! %1
+
!
!
&2
)++3 ,
+
*
!
!
#
%!
*
!
*
!
&( &
/ 0
&
2
Apartado 2. (2 puntos). Codificar una función 4
5 %
6 que reciba como datos de entrada
la fecha de imposición de un capital en un banco (
5
) y la fecha de retirada del mismo
(
5
) y, calcule y devuelva el número total de días que dicho capital ha estado depositado
en el banco.
4
Ejemplo:
5
%
75829:;
5
75829:;
5
Para una imposición el día 11/11/2004 con una retirada el día 12/06/2006
Devolverá: 578 días.
Que son,
1%
!
!
!
!
*75829:;
19+31 = 50 días de 2004
365 días de 2005 (año no bisiesto)
31+28+31+30+31+12 = 163 días de 2006
Total = 50 + 365 + 163 = 578 días
Nota: Se sabe que un año es bisiesto si es múltiplo de 4 excepto los años múltiplos de 4 que, además, son múltiplos de
100 pero no son múltiplos de 400. Siempre se supondrá que la fecha de imposición es anterior a la fecha de retirada.
4
5
%
75829:;
5
75829:;
5
< !
5
5
9=
>
5
5
9 %!
)
4
4
5
!
!!
>
!
!!
!!
5 !
5 !
)
!
5
5
?
5
5
@
?
5
5
) A
5
*
@
9=
C
?
>
! ?
%!
("
+ BB
( ++
+ BB
.33 A
5
5
5
5
5
9=
!
.3 A
>
5
("
5
5
?
#
+ BB C
5
5
9=
5
*
>
5
5
D
#
5
("++ C
!
5
( ++
+ BB
# .33
# .3
?
5
)
1
$
("++ C +
+
##
!
4
!
>
!
!
5
*
4
5 !
!!
75829:;
< !
E!
!
,
>
;?
!
!
>
!
$
!
##
F
)G
("
+ BB
( ++
+ BB
("++ C +
# )H
C
# )I
!
J
"G
3G
HG
G
# .+
!
G
*
*
!
*
!
J
#.
!
Apartado 3. (2 puntos) Ejercicio de ficheros.
Disponemos de un fichero binario
que contiene información de cada uno de los
libros de una bilioteca ( G'
%'
). Cada registro contiene los datos de un
G'
%'
ejemplar de un libro. Se sabe que de un mismo libro puede haber más de un ejemplar. El fichero
está ordenado por materia y dentro de cada materia por título. En este caso se sabe que no hay
títulos repetidos. La estructura del registro es la siguiente:
1%
K
7>
;
2
!
!
!
!
!
)+
)+
)+
!
!
!
!
!
!
*75@LTPN
!
!
!
!
!
!
!
!
/ 0
/)+0
/)+0
/)+0
Se pide: Codificar un programa que, a partir del fichero, saque un listado en pantalla de libros
con el siguiente formato:
@LM7;4N 42 2O2KE@;P2M ENP K;72PL; Q ENP 7L7R@N
K
! G SSSSSSSSSSSS
7L7R@N
;R7NP
SSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSS
24L7NPL;@
SSSSSSSSSSSSSS
2O2KE@;P2M
S
SSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSS
7
!
! G SSS
SSSSSSSSSSSSSS
S
24L7NPL;@
SSSSSSSSSSSSSS
2O2KE@;P2M
S
SSSSSSSSSSSSSS
S
K
! G SSSSSSSSSSSS
7L7R@N
;R7NP
SSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSS
7
!
! G SSS
7
!
G SSSS
E! ,!
G
! % 6 G
4
;
! G
8
G
4 !
E! ,!
4
1%
%!
! ,
%!
!
6
%
!
%
!
!
!
!
!
/ 0
!
/)+0
!
!
/)+0
!
!
/)+0
*75@LTPN
4
!
6
!
!
5
! ! / 0
!
5
! ! /)+0
% !
% !
8L@2
!
75@LTPN
!
5
!
E
!
P ,
!
%
! 5
!
!
L
U
% ! 5
% ! 5
;% ! !
!
%
!
C
E
! F
9
%!
%!
@
!
C
!
+
+
!
& G'
G''
-R@@
% !
%'
''
%
!
&
&! &
U
!
!
%!
! ! ,
!
!
!
&'
' '
&
&
!
B
!
@LM7;4N 42 2O2KE@;P2M ENP K;72PL; Q ENP
7L7R@N'
' &
ENP 7L7R@N
' ' &
%!
! ! ,
!
75@LTPN
!
U
!
P
%!
! ! ,
!
!
! %1
5
! !
!
!
! %1
5
! !
!
% !
M
!
!
!
%!
&K
! G ( ' &
5
! !
&K
%!
&7L7R@N
;R7NP
24L7NPL;@
2O2KE@;P2M'
2O2KE@;P2M' &
%!
&$$$$$$$$$$$$$
&$$$$$$$$$$$$$ $$$$$$$$$$$$$
$$$$$$$$$$$$$ $$$$$$$$$$
$$$$$$$$$$$$$$
$$$$$$$$ $$$$$$$$$$'
$$$$$$$$$$' &
@
! $
!
%!
&($
!
!
!
&($)+ ($
($)+ ($
($)+ &
!
!
*
@
!
F
!
B
C
,
U
!
!
!
%
! ,
!
75@LTPN
5
!
!
!
!
%
!
7!
%
!
!
+ BB
5
!
!
!
+
##
*
!
%
7!
8
%!
%5
!
!
% !
! %
!
& (. ' &
!
! 5
#
!
!
%
L
! %1
5
% !
@
%!
&($
&($)+
!
! !
% !
%
%!
+
!
!
!
($
($)+
!
! $
($
($)+ &
!
!
!
!
*
!
!
P %
8
%!
%
8
!
!
& (. ' &
! 5
!
%!
#
!
!
#
%!
! 1
,
! !
% !
% !
! !
! G (. ' &
% ! 5
!
!
!
!
5
! !
&
&7
&7
% ! 5
!
% ! 5
L
! %1
5
! !
%!
&K
! G ( '
&K
L
! %1
5
! !
!
%!
&7L7R@N
;R7NP
2O2KE@;P2M'
24L7NPL;@
2O2KE@;P2M' &
%!
&$$$$$$$$$$$
$$$$
$$ $$$$$$$$$$'
&$$$$$$$$$$$$$
$$$$$$$$$$$$$$
$$$ $$$$$$$$$$
$$$$$$$$$$$
$$$$$ $$$$$$$$
$$$$$$$$$$
$$$$$$
$$$$
$$$$$$$$$$' &
% !
@
! $
!
%!
&($
($
$)+ &
!
!
&($)+ ($
($)+ (
!
!
!
*
*
@
!
!
B
!
U
!
! ! ,
!
75@LTPN
1
!
*
8
%!
%
8
%!
%
E
%!
9
!
& (. ' &
! 5
!
&7
&7
! 5
&7
&7
!!
#
!
!
#
! !
% !
% !
! !
! G (. ' &
% ! 5
!
!
!
G (
%
!
' &
5
!
%
!
5
!
*
!
*
%!
! +
&'
&' '
2!! !
% !
!
!
&
Apartado 4. (2 puntos). Listas simplemente encadenadas.
Suponemos que ya existe una lista simplemente encadenada con información de las
selecciones nacionales de fútbol que están participando en el campeonato mundial de fútbol de
Alemania. Los elementos son de tipo 75M2@299LN75M2@299LN- que se encuentran en cualquier orden. La
dirección del primer elemento de la lista se encuentra en el puntero
.
1%
!
!
%
/)+0
!
,! %
!
!
*75M2@299LN-
!/.+0
!/.+0
,
Se pide: Codificar una función 75M2@299LN9! !5
5
75M2@299LNque reciba
el puntero
y genere una nueva lista en la que se encuentren las selecciones ordenadas por el
nombre del país. La función devolverá la dirección del primer elemento de la nueva lista.
Nota: En este caso debe suponerse que la memoria dinámica para los nuevos elementos se pide en la función y se libera en el main.
75M2@299LN-
9!
9!
!5
4
!
75M2@299LNL
U
)
-R@@
M !
!!
F
5
75M2@299LN-
)
C
V
V
V)
-R@@
W
V
!
75M2@299LNV
-R@@
%!
&'
1
&' -
U
!
9 %
! %1
V$
V$ %
V$
V$ ,! %
! %1
V$
V$
2
)
$ %
$ ,! %
!
V
!
-R@@
M
%!
V$
V$
!
)
,
M
!
75M2@299LN&
V
!
V
-R@@
*
,
$
!
!
T
V
V)
)
)
F
V $
,
!
V)
V
V
V $
%
C -R@@ BB
V $ %
V$
V$ %
+
,
*
K !
V
@
V$
$
V
X
!!
,
)
, !
!
) BB
BB
%
!
%
%!
)
V $ %
!
V$
V$ %
+
, !
V
*
V $
,
!
%
@
V $
V$
V$
!!
,
,
%
@
V$
V$
V)$
V)$
!!
,
,
%
-R@@ BB
V $ %
D
V
-R@@
V$
V$ %
%
+
6
*
*
*
*
*
$
*
!
*
!
)
,
%
V
V
6
!
Apartado 5. (1 punto). Manejo de cadenas de caracteres.
Codificar una función 9
! que reciba dos cadenas de caracteres (
y
)) y las
devuelva unidas (la primera seguida de la segunda) en una tercera cadena (
.) de la que se
devuelve su dirección de memoria. Se sabe que cada una de las cadenas que se reciben no pueden
tener más de 50 caracteres.
!
!
9
!
4
!
)
%!
!
!
,
,
!
!
,
#
!
=
!
-R@@
&' 1
9 %
!
+
,
/ 0
9 %
!
+
)
K
/
,
)
,
)
% !
,
)
#
U
,
!
&
!
##
/ 0
)
/
*
!
!
9
,
,
,
E
!
!
!
,
*
!
9
,
##
)
,
# 0
Y'+Z
0
Y'+Z
6
)/
)/ 0
Apartado 6. (1 punto). Recursividad.
Diseñar una función recursiva int Ackerman (int m, int n); para calcular el valor de la
función de Ackerman.
Se sabe que dicha función vale:
Ackerman
Ackerman
$
Ackerman (m, ( $
Por otra parte, se conoce que:
Ackerman
Ackerman
#
+
Ackerman
Nota: Se supone que
y
$
+ 1
son números enteros >= 0.
; J !
!
+
!
!
*
!
#
+
!
; J !
$
!
; J !
$
!
; J !
$
+
Apartado 7. (1 punto). Ejercicio de cálculo matemático.
Escribir una función 9
5
!
que reciba el valor de un número entero y positivo,
y devuelva cuántos números hay entre 1 y que estén formados sólo por cifras impares. En caso de
recibir un número negativo, la función devolverá el valor -1.
Se pide:
a) Prototipo de la función.
b) Código de la función.
Ejemplo: Si se recibe el valor 25, devolverá 10.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
9
Prototipo:
Función:
9
5
4
5
!
!
!
!
9
%!
D
+
!
$
!
+
!
( + () C
+
+
!##
*
*
!
+
##
F
*
!
!
!
+
,
Descargar