Anda di halaman 1dari 2

Exn de LP.

Junio 2008

1. ( puntos) Trabajando con las estructuras y constantes del marcador del ejercicio del Bloque I:
const unsigned i nt MaxMarcadores ( 10 ) ; // N mero m ximo de marcadores
const unsigned i nt MaxURL ( 100 ) ; // L o n g i t u d m xima URL
const unsigned i nt MaxTitulo ( 50 ) ; // L o n g i t u d m xima t tulo
const unsigned i nt MaxComentario ( 200 ) ; // L o n g i t u d m xima comen t ario
struct da ta {
unsigned i nt dia , mes , anho ;
};
struct marcador {
char u r l [ MaxURL ] ;
enum Tmarcador { video , imagen , e n t r a d a b l o g , pa g ina web } tipo Ma r ca do r ;
char t i t u l o [ MaxTitulo ] ;
char c o m e n t a r i o [ MaxComentario ] ;
bool e s t a d o ; // 1 : P u b l i c o , 0 : Privado
da ta f e c h a ;
};

Escribir la rutina para leer un nuevo marcador desde el teclado, empleando el prototipo void leerMarcador ( marcador &
No es necesario implementar otras funciones que se necesiten, como la de comprobar si un marcador ya esttro-
ducido o no, pero sdicar que se usan. Por ejemplo, pondros, de ser el caso:
void l e e r M a r c a d o r ( marcador &elMa r ca do r ) {
........................................................
validarFecha ( . . . . )
........................................................
}

2. ( puntos) Trabajando con las estructuras y clases correspondientes al Marcador y al Usuario del ejercicio del
Bloque II:
const unsigned i nt TAM ( 100 ) ; // L o n g i t u d m xima URL
struct f e c h a {unsigned i nt d i a ; unsigned i nt mes ; unsigned i nt anho ;
};
struct Marcador {char u r l [ TAM ] ; char t i t u l o [ TAM ] ; f e c h a f e c h a c r e a c i o n ;
} ; class Usuario {
public : // M todos de l a c l a s e . . . . . . . . . . . . . . . . . . . . . .
private : s t r i n g nombreUsuario ; s t r i n g c l a v e U s u a r i o ; s t r i n g m a i l U s u a r i o ; unsigned i nt numMar
};

Escribir la rutina para sobrecargar el operador + para la clase Usuario, como funciiga (Ejemplo: num + u1 ).
La finalidad de este operador es ar tantos marcadores como indica el operando num a los marcadores que tiene
el objeto u1, devolviendo el objeto resultante.
3. ( puntos) Trabajando con las clases definidas en el ejercicio del Bloque III:
c l a s s Marcador {
public :
Marcador ( s t r i n g U, s t r i n g Titpa g ) {
Ur l = U;

t i t u l o P a g i n a = Titpa g ; }
/∗ get ID d e v u e l v e e l ISBN s i e l marcador e s un l i b r o y e l ISSN s i e s u n a r e v i s t a ∗/ v i
/∗ s e t I D a c t u a l i z a e l ISBN s i e l marcador e s un l i b r o y e l ISSN s i e s una r e v i s t a , a
v i r t u a l void s e t I D ( s t r i n g idnuevo ) = 0 ;
virtual s t r i n g to Str ing ( ) {
s t r i n g s a l i d a = ”\n” ;
s a l i d a += Ur l + ’ \ t ’ + t i t u l o P a g i n a + ’ \n ’ ;
return s a l i d a ;
}

private :

Pna 1 de ??
Exn de LP. Junio 2008

s t r i n g Ur l ;
string tituloPagina ;

};

c l a s s M a r c a d o r B i b l i o : public Marcador {
public :
M a r c a d o r B i b l i o ( s t r i n g Tit , s t r i n g Aut , s t r i n g Url , s t r i n g Titpa g )
: Marcador ( Url , Titpa g ) {
Titulo = Tit ;
Autor = Aut ;
}
string toString ( ) {
s t r i n g s a l i d a = Marcador : : t o S t r i n g ( ) ;
s a l i d a += ’ \ t ’ + T i t u l o + ’ \ t ’ + Autor ;
return s a l i d a ;
}

private :
s t r i n g Titulo ;
s t r i n g Autor ;

};
c l a s s MarcadorLibro : public M a r c a d o r B i b l i o {
public :
MarcadorLibro ( s t r i n g I , s t r i n g Tit , s t r i n g Aut , s t r i n g Url , s t r i n g Titpa g )
: M a r c a d o r B i b l i o ( Tit , Aut , Url , Titpa g ) {
Isbn = I ;
}
private :
s t r i n g Isbn ;
};
c l a s s Ma r ca do r Revista : public M a r c a d o r B i b l i o {
public :
Ma r ca do r Revista ( s t r i n g I , s t r i n g Tit , s t r i n g Aut , s t r i n g Url , s t r i n g Titpa g )
: M a r c a d o r B i b l i o ( Tit , Aut , Url , Titpa g ) {
Issn = I ;
}
private :
string Issn ;
};

class Usuario {
public :
Usuario ( s t r i n g n , s t r i n g c , s t r i n g e )
: nombre ( n ) , c l a v e ( c ) , e m a i l ( e ) {
};
/∗ I n s e r t a e l marcador dado como argumento en l a l i s t a de marcadores d e l u s u a r i o . ∗/
void i n s e r t a r M a r c a d o r ( Marcador ∗m ) {
L i s t a M a r c a d o r e s . push ba ck ( m ) ;
}
/∗ D e v u e l v e v e r d a d e r o s i ha e l i m i n a d o e l marcador cuyo ISBN/ISSN c o i n c i d e c o n e l argume
bool e l i m i n a r M a r c a d o r ( s t r i n g i d ) ;
private : s t r i n g nombre ;
string clave ;
s t r i n g email ;
v e c t o r < Marcador ∗ > L i s t a M a r c a d o r e s ;
};

Pna 2 de ??