Documente Academic
Documente Profesional
Documente Cultură
1. Un puntero:
A. Permite acceder a una posición de memoria.
B. Mediante el operador *, es posible modificar el valor de la posición a la que apuntan.
C. Ambas son correctas.
2. ¿Es correcta la definición de norte?
char ∗ d i r [ 4 ] = { ” n o r t e ” , ” s u r ” , ” e s t e ” , ” o e s t e ” } ;
char ∗ n o r t e = &d i r [ 0 ] ;
Página 1 de 4
Exámen de LP. Septiembre 2007 Teorı́a
14. 4. ¿Son correctas las siguientes declaraciones y definiciones? Razónalo brevemente y con claridad.
c l a s s Alumno {
s t r i n g nombre ;
public :
Alumno ( const s t r i n g &n ) : nombre ( n )
{ nombre = n ; }
};
class Profesor {
s t r i n g nombre ;
public :
P r o f e s o r ( const s t r i n g &n ) : nombre ( n )
{ nombre = n ; }
};
c l a s s B e c a r i o : public Alumno , public P r o f e s o r {
s t r i n g nombre ;
public :
B e c a r i o ( const s t r i n g &n )
{ nombre = n ; }
s t r i n g getNombre ( ) const { return nombre ; }
};
Página 2 de 4
Exámen de LP. Septiembre 2007 Teorı́a
i nt main ( ) {
Cadena ∗ c1 = new Cadena ( ”C++, s i n e r r o r e s ” ) ;
Cadena c2 = ∗ c1 ;
co ut << c1−>getCadena ( ) << e n d l ;
delete c1 ;
co ut << c2 . getCadena ( ) << e n d l ;
}
16. 2. Dada la definición de la clase Habitacion, completar la función actualizar, de forma que todas las habitaciones
almacenadas en el fichero binario çlinicaçuyo número esté comprendido entre 100 y 120 (ambos incluidos), queden
vacı́as (el NIF del paciente será la cadena vacı́a).
const unsigned i nt TAMNIF ( 1 0 ) ;
class Habitacion {
unsigned i nt numero ;
char n i f [ TAMNIF ] ;
public :
H a b i t a c i o n ( unsigned i nt num = 0 , char n i f E n t r a d a [ ] = ” \0 ” ) {
numero = num ;
strcpy ( nif , nifEntrada ) ; }
void p u t N i f ( char nuevo Nif [ ] ) { s t r c p y ( n i f , nuevo Nif ) ; }
unsigned i nt getNumero ( ) { return numero ; }
char ∗ g e t N i f ( ) { return n i f ; }
}
void a c t u a l i z a r ( ) {
Habitacion h ;
fstream f l u j o ( ” c l i n i c a ” , ) ;
while ( ! f l u j o . e o f ( ) ) {
i f ( ( h . getNumero ( ) >= 100 ) && ( h . getNumero ( ) <= 120 ) ) {
h . putNIf ( ” \0 ” ) ;
}
}
flujo . close ( );
}
17. 3. En el siguiente programa, indicar cómo se resuelven todos los mensajes (mediante ligadura dinámica o estática)
y qué función se ejecuta (clase base o clase derivada).
c l a s s ba se {
protected :
i nt b ;
public :
v i r t u a l void mo str a r ( ) { co ut << ” b= ” << b << e n d l ; }
void a lma cena r ( ) { c i n >> b ; }
};
c l a s s d e r i v a d a : public ba se {
protected :
i nt d ;
public :
void mo str a r ( ) { co ut << ” b= ” << b << ” , d= ” << d << e n d l ; }
void a lma cena r ( ) { c i n >> b >> d ; }
};
void main ( ) {
ba se obj1 , ∗p ;
d e r i v a d a obj2 , ∗q ;
p = &o b j 1 ;
p −> a lma cena r ( ) ;
p −> mo str a r ( ) ;
q = &o b j 2 ;
q −> a lma cena r ( ) ;
Página 3 de 4
Exámen de LP. Septiembre 2007 Teorı́a
q −> mo str a r ( ) ;
p = &o b j 2 ;
p −> a lma cena r ( ) ;
p −> mo str a r ( ) ;
Página 4 de 4