Sei sulla pagina 1di 15

Preguntas varias.

Nivel 2

1. [pregunta_22.txt] Explica el significado de cada una de las siguientes declaraciones:


int ∗px ;
float a , b ;
f l o a t ∗pa , ∗pb ;
f l o a t a f = −0.167;
f l o a t ∗ p f a=&a ;
char c1 , c2 , c3 ;
char ∗ pc1 , ∗ pc2 , ∗ pc3=&c1 ;
double f u n c ( double ∗a , double ∗b , int ∗ c ) ;
double ∗ f u n c 2 ( double ∗a , double ∗b , int ∗ c ) ;
double ∗apd [ 1 2 ] ;
char ∗ apc [ 1 2 ] ;
const char ∗d [ 4 ] = { ” n o r t e ” , ” s u r ” , ” e s t e ” , ” o e s t e ” } ;
long ∗p [ 1 0 ] [ 2 0 ] ;
char muestra ( int ( ∗ p f ) ( char a , char b ) ) ;
int ( ∗ p f ) ( void ) ;
int ( ∗ p f f 1 ) ( char a , char b ) ;
int ( ∗ p f f 2 ) ( char ∗a , char ∗b ) ;
f l o a t ( ∗ x ) ( int ∗a ) ;
f l o a t x1 ( int ∗a [ ] ) ;
f l o a t ∗ x2 ( int a [ ] ) ;
f l o a t ∗ x3 ( int ∗a [ ] ) ;
f l o a t ( ∗ x4 ) ( int ∗a [ ] ) ;
f l o a t ∗ ( ∗ x5 ) ( int ∗ a [ ] ) ;

Solución:

2. [pregunta_23.txt] Realiza un programa que sume dos matrices 3x3 enteros. Para ello, dicho programa debe
ser modular, es decir; debe contener funciones separadas que realicen las diversas tareas: lectura de las matrices,
calculo de la suma de los elementos de estas y listado del resultado.

Solución:

#include <i o s t r e a m >

using namespace s t d ;

const int tamano = 3 ;

void l e c t u r a ( int m a t r i z [ ] [ tamano ] , int n ) ;


void suma ( int m a t r i z 1 [ ] [ tamano ] , int m a t r i z 2 [ ] [ tamano ] , int laSuma [ ] [ tamano ] ) ;
void s a l i d a ( int suma [ ] [ tamano ] ) ;

int main ( ) {
int m a t r i z 1 [ tamano ] [ tamano ] ;
int m a t r i z 2 [ tamano ] [ tamano ] ;
int laSuma [ tamano ] [ tamano ] ;
l e c t u r a ( matriz1 , 1 ) ;
l e c t u r a ( matriz2 , 2 ) ;
suma ( matriz1 , matriz2 , laSuma ) ;
s a l i d a ( laSuma ) ;
}

void l e c t u r a ( int m a t r i z [ ] [ tamano ] , int n ) {

Página 1 de 15
Preguntas varias. Nivel 2

f or ( int i = 0 ; i < tamano ; i ++){


f or ( int j =0; j < tamano ; j ++){
c o u t << ” F i l a ” << i << ” , columna ” << j << ” : ” ;
c i n >> m a t r i z [ i ] [ j ] ;
}
}
}

void suma ( int m a t r i z 1 [ ] [ tamano ] , int m a t r i z 2 [ ] [ tamano ] , int laSuma [ ] [ tamano ] ) {


f or ( int i = 0 ; i < tamano ; i ++){
f or ( int j = 0 ; j < tamano ; j ++){
laSuma [ i ] [ j ] = m a t r i z 1 [ i ] [ j ] + m a t r i z 2 [ i ] [ j ] ;
}
}
}

void s a l i d a ( int laSuma [ ] [ tamano ] ) {


c o u t << e n d l << e n d l << ”La m a t r i z suma e s : ” ;
c o u t << e n d l ;
f or ( int i = 0 ; i < tamano ; i ++){
f or ( int j = 0 ; j < tamano ; j ++){
c o u t << laSuma [ i ] [ j ] << ”\ t ” ;
}
c o u t << e n d l ;
}
}

3. [pregunta_24.txt] Realiza un programa que ordene alfabéticamente los strings almacenados en un vector de
10 elementos. Para ello, el programa debe de contener varias funciones: una que almacene en dicho vector los
strings introducidos por el usuario, otra que ordene los strings del vector, y por último, otra que visualice los
strings que contiene el vector una vez ordenado.

Solución:

#include <i o s t r e a m >


using namespace s t d ;
const int tamano = 1 0 ;
void almacenar ( s t r i n g m a t r i z [ ] ) ;
void v i s u a l i z a r ( s t r i n g m a t r i z [ ] ) ;
void o r d e n a r ( s t r i n g m a t r i z [ ] ) ;

int main ( ) {
s t r i n g m a t r i z [ tamano ] ;
almacenar ( m a t r i z ) ;
ordenar ( matriz ) ;
v i s u a l i z a r ( matriz ) ;
}

void almacenar ( s t r i n g m a t r i z [ tamano ] ) {


f or ( int i =0; i < tamano ; i ++){
c o u t << ” I n t r o d u c e l a cadena ” << i +1 << ” : ” ;
c i n >> m a t r i z [ i ] ;
c o u t << e n d l ;
}
}

Página 2 de 15
Preguntas varias. Nivel 2

void o r d e n a r ( s t r i n g m a t r i z [ tamano ] ) {
s t r i n g aux ;
f or ( int j = tamano − 1 ; j > 0 ; j −−){
f or ( int i = 0 ; i < j ; i ++){
i f ( m a t r i z [ i ]> m a t r i z [ i +1]) {
aux = m a t r i z [ i ] ;
m a t r i z [ i ]= m a t r i z [ i + 1 ] ;
m a t r i z [ i +1] = aux ;
}
}
}
}

void v i s u a l i z a r ( s t r i n g m a t r i z [ tamano ] ) {
c o u t << ” Las c ad e n as or d e n ad as son : ” << e n d l ;
f or ( int i = 0 ; i < tamano ; i ++){
c o u t << m a t r i z [ i ] << e n d l ;
}
}

4. [pregunta_25.txt] Escribe un programa que calcule el factorial de los numeros enteros impares introducidos por
el usuario. Los numeros impares negativos se consideraran positivos para el calculo de su factorial. El programa
debe finalizar cuando se introduzca el valor 0.

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int f a c t o r i a l ( int ) ;
int main ( ) {
int numero ;
int f a c t ;
c o u t << ” I n t r o d u c e 0 para t e r m i n a r . ” ;
c o u t << e n d l << e n d l ;

do {
c o u t << ” I n t r o d u c e un numero : ” ;
c i n >> numero ;
i f ( numero % 2 ) {
i f ( numero < 0 ) {
numero = − numero ;
}
f a c t = f a c t o r i a l ( numero ) ;
c o u t << e n d l << ”Su f a c t o r i a l e s : ” << f a c t ;
c o u t << e n d l ;
}
} while ( numero ) ;
}

int f a c t o r i a l ( int numero ) {


int r e s u l t a d o = 1 ;
f or ( int i = 2 ; i <= numero ; i ++){
r e s u l t a d o ∗= i ;

Página 3 de 15
Preguntas varias. Nivel 2

}
return r e s u l t a d o ;
}

5. [pregunta_26.txt] Escribe un programa que, por medio de una plantilla de función, determine el menor de
tres argumentos. Prueba el programa con trı́os de números enteros, de carácter y de punto flotante.

Solución:

#include <i o s t r e a m >


using namespace s t d ;

template <c l a s s T>


T & menor (T& a , T& b , T&c ) {
i f (a < b)
if (a < c)
return a ;
else
return c ;
else
i f (b < c )
return b ;
else
return c ;
}
int main ( ) {
int m=10 , n=41 , p=8;
c o u t << ” El menor e s : ” << menor (m, n , p )<<e n d l ;
f l o a t a=1, b=2, c =3;
c o u t << ” El menor e s : ” << menor ( a , b , c )<<e n d l ;
char x ( ’ x ’ ) , y ( ’ y ’ ) , z ( ’ z ’ ) ;
c o u t << ” El menor e s : ” << menor ( x , y , z )<<e n d l ;
}

6. [pregunta_27.txt] Realiza un programa que usando la clase string cuente las palabras que introduce el usuario
antes de introducir la palabra fin y además que visualice la longitud media de dichas palabras.

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
s t r i n g palabra ;
int c o n t a d o r =0;
int l o n g i t u d =0;

c o u t << e n d l << ” I n t r o d u c e f i n para t e r m i n a r . ” ;


c o u t << e n d l ;
do{
c o u t << ” I n t r o d u c e p a l a b r a : ” ;
c i n >> p a l a b r a ;
i f ( p a l a b r a != ” f i n ” ) {
l o n g i t u d += p a l a b r a . l e n g t h ( ) ;

Página 4 de 15
Preguntas varias. Nivel 2

c o n t a d o r ++;
}
} while ( p a l a b r a != ” f i n ” ) ;

c o u t << e n d l << ” El numero de p a l a b r a s e s : ” << c o n t a d o r ;


c o u t << e n d l << ”La l o n g i t u d media e s : ” << ( f l o a t ) l o n g i t u d / c o n t a d o r ;
c o u t << e n d l ;
}

7. [pregunta_28.txt] Una empresa tiene cuatro vendedores que venden cinco productos. Una vez por dı́a cada
vendedor entrega una hoja por cada tipo de producto vendido. Las hojas contienen: el número del vendedor,
el número del producto y el importe (real) de las ventas de dicho producto en el dı́a. Dispones de las hojas de
ventas del último mes. Realiza un programa que tome como entrada esta información y la almacene en un array
tridimensional. Posteriormente dicho programa debe de calcular y visualizar las ventas totales por vendedor y
producto para cada dı́a del mes. Para ello, usa dos arrays bidimensionales: uno que contenga los totales por
vendedor para cada dı́a y otro que acumule los totales por producto para cada dı́a. El programa debe ser
estructurado, es decir define diferentes funciones para cada una de las tareas: introducir información, calcular
totales por vendedor para cada dı́a, calcular totales por producto para cada dı́a y visualizar totales.

Solución:

#include <i o s t r e a m >


using namespace s t d ;
const int N vendedores = 4 ;
const int N p r od u c tos = 5 ;
const int N d i a s = 3 0 ;

struct Hoja {
s t r i n g vendedor ;
s t r i n g producto ;
float importe ;
int d i a ;
};

s t r i n g v e n d e d o r e s [ N vendedores ] ;
s t r i n g p r o d u c t o s [ N p r od u c tos ] ;
int menu ( ) ;
void i n t r o d u c i r V e n d e d o r e s ( s t r i n g v e n d e d o r e s [ N vendedores ] ) ;
void i n t r o d u c i r P r o d u c t o s ( s t r i n g p r o d u c t o s [ N p r od u c tos ] ) ;
void i n t r o d u c i r ( Hoja l i b r o [ N vendedores ∗ N p r od u c tos ∗ N d i a s ] ) ;

int main ( ) {
int o p c i o n ;
Hoja l i b r o [ N vendedores ∗ N p r od u c tos ∗ N d i a s ] ;
o p c i o n = menu ( ) ;

do{
switch ( o p c i o n ) {
case 1 :
introducirVendedores ( vendedores ) ;
o p c i o n = menu ( ) ;
break ;
case 2 :
introducirProductos ( productos ) ;
o p c i o n = menu ( ) ;

Página 5 de 15
Preguntas varias. Nivel 2

break ;
case 3 :
introducir ( libro ) ;
break ;
default :
break ;
}
} while ( o p c i o n ) ;
}

int menu ( ) {
int o p c i o n ;
c o u t << e n d l ;
c o u t << e n d l << ”1.− I n t r o d u c i r vendedores . ” ;
c o u t << e n d l << ”2.− I n t r o d u c i r productos . ” ;
c o u t << e n d l << ”3.− I n t r o d u c i r hojas del l i b r o . ” ;
c o u t << e n d l << ”0.− S a l i r . ” ;
c o u t << ” S e l e c c i o n e una o p c i o n : ”;

do{
c i n >> o p c i o n ;
} while ( ( o p c i o n < 0 ) && ( o p c i o n > 3 ) ) ;
return o p c i o n ;
}

void i n t r o d u c i r V e n d e d o r e s ( s t r i n g v e n d e d o r e s [ ] ) {
c o u t << e n d l << ” I n t r o d u z c a l o s v e n d e d o r e s . ” << e n d l ;
f or ( int i = 0 ; i < N vendedores ; i ++){
c o u t << e n d l ;
c o u t << ” Vendedor ” << i +1 << ” : ” ;
c i n >> v e n d e d o r e s [ i ] ;
}
}

void i n t r o d u c i r P r o d u c t o s ( s t r i n g p r o d u c t o s [ ] ) {
c o u t << e n d l << ” I n t r o d u z c a l o s p r o d u c t o s . ” << e n d l ;
f or ( int i = 0 ; i < N p r od u c tos ; i ++){
c o u t << e n d l ;
c o u t << ” Producto ” << i +1 << ” : ” ;
c i n >> p r o d u c t o s [ i ] ;
}
}

void i n t r o d u c i r ( Hoja l i b r o [ N vendedores ∗ N p r od u c tos ∗ N d i a s ] ) {


int c o n t a d o r = 0 ;

c o u t << ” I n t r o d u c i r l a s h o j a s . ” ;

f or ( int i = 0 ; i < N d i a s ; i ++){


f or ( int j = 0 ; j < N vendedores ; j ++){
f or ( int k = 0 ; k < N p r od u c tos ; k++){
l i b r o [ c o n t a d o r ++]. vendedor = j ;
l i b r o [ contador ] . producto = k ;
l i b r o [ contador ] . dia = i ;
c o u t << ” Ventas d e l d i a ” << i << ” d e l vendedor ” << j
<< ” d e l p r o d u c t o ” << k << ” : ” ;
c i n >> l i b r o [ c o n t a d o r ] . i m p o r t e ;

Página 6 de 15
Preguntas varias. Nivel 2

}
}
}
}

8. [pregunta_29.txt] Escribe un programa que reciba por separado un nombre y un apellido y luego visualice el
resultado de su concatenación. Utiliza la clase estándar string.

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
s t r i n g nombre , a p e l l i d o ;
c o u t << e n d l << ” I n t r o d u c e tu nombre : ” ;
c i n >> nombre ;
c o u t << e n d l << ” I n t r o d u c e tu a p e l l i d o : ” ;
c i n >> a p e l l i d o ;
c o u t << e n d l << e n d l << ”Te l l a m a s : ” << nombre + ” ” + a p e l l i d o ;
c o u t << e n d l << e n d l ;
}

9. [pregunta_30.txt] Usando cadenas como vectores de caracteres y sin utilizar las funciones de librerı́a propias
para el manejo de dichas cadenas, realiza:
(a) un programa que lea una lı́nea de texto y la visualice al revés. La longitud de la lı́nea no será especificada
(terminará al pulsar la tecla Enter), pero se supone que no excederá de 80 caracteres.
(b) un programa que analice una lı́nea de texto leı́da desde el teclado previamente. Concretamente, el programa
debe visualizar el número de vocales, consonantes, dı́gitos, espacios en blanco y otros caracteres (que no
pertenecen a las categorı́as anteriores) contenidos en dicha lı́nea de texto.
(c) una función que compare alfabéticamente dos cadenas dadas, de forma que devuelva 0 si son iguales, -1 si la
primera cadena es menor que la segunda, y 1 si la primera es mayor que la segunda. Escribir un programa
de prueba.
(d) una función que copie un máximo de cuenta caracteres de la cadena origen, a la cadena destino, a partir de
una determinada posición (en la cadena destino). Escribir un programa de prueba.
(e) una función que lea una palabra del teclado y devuelva otra conteniendo los caracteres que se encuentra en
posiciones impares de la palabra introducida. El tamaño de la palabra introducida es conocido en tiempo
de ejecución.

Solución:

10. [pregunta_32.txt] Dado el programa anterior diseñar una función que localice un cliente particular a partir
de su número de cuenta. Dicha función debe devolver la dirección de memoria donde comienza la información
del cliente, para a partir de la cual mostrar dicha información.

Solución:

Página 7 de 15
Preguntas varias. Nivel 2

11. [pregunta_33.txt] Teniendo en cuenta los programas de los ejercicios anteriores, realiza una función que per-
mita actualizar la información de cada cliente, de forma individual.

Solución:

12. [pregunta_34.txt] Escribe un programa que visualice el número de calificaciones distintas obtenidas por lo
alumnos de una clase, cuyo número es desconocido. Las notas de los diversos alumnos son introducidas mediante
letras siguiendo el siguiente criterio: S suspenso, A aprobado, N notable, B sobresaliente, M matricula de honor y P
no presentado. Utiliza la estructura switch y una enumeración para realizar el conteo y la visualización legible
de las calificaciones.

Solución:

13. [pregunta_35.txt] Realiza un programa que almacene en un array los nombres y las fechas de nacimiento de
varios estudiantes. Cada fecha de nacimiento consta de tres números: dı́a, mes y año. El año que se almacena es
un entero de tres dı́gitos que representa el número de años desde 1900, es decir; el año 1999 da lugar a que se
almacene el número 99, el año 2010 da lugar a que se almacene el número 110, y ası́ sucesivamente. Para ahorrar
memoria, estos tres números enteros se deben almacenar en campos de bits.

Solución:

14. [pregunta_36.txt] Implementa un programa que escriba en un archivo 5 numeros enteros separados por punto
y coma, y que los lea y muestre por pantalla.

Solución:

15. [pregunta_37.txt] Modifica el ejercicio anterior para añadir al fichero otros 5 enteros.

Solución:

16. [pregunta_38.txt] Escribe un programa que lea de teclado una lista de DNI y Nota (vector de caracteres, int),
los almacene en un fichero y después los visualice por pantalla.

Solución:

17. [pregunta_39.txt] Escribe un programa para çodificarün archivo en otro (leer/escribir). Utilizar alguna función
de codificación (p.e.transformar cada carácter en su siguiente).

Solución:

Página 8 de 15
Preguntas varias. Nivel 2

18. [pregunta_40.txt] Escribir un programa para almacenar en disco un vector de reales (utilizando la función
write).

Solución:

19. [pregunta_41.txt] Definir estructuras para contener los datos de un cliente y una cuenta bancaria, escribir
funciones para almacener y recuperar de archivo estos datos y escribir un programa de prueba.

Solución:

20. [pregunta_42.txt] Utilizando la función getline escribe un programa que lea el contenido de un fichero y lo
muestre por pantalla.

Solución:

21. [pregunta_43.txt] Escribe un programa que utilizando acceso aleatorio vaya leyendo un fichero de texto y
modificando cada ’j’por ’x’.

Solución:

22. [pregunta_44.txt] Escribe un programa que almacene en un fichero los datos de los empleados de una empresa.
Mediante acceso directo:
(a) Lee de fichero los datos del empleado i.
(b) Lee de fichero los datos del empleado cuyo DNI es d.
(c) Muestra los empleados cuyo salario sea superior a una cantidad x.

Solución:

23. [pregunta_45.txt] Escribe un programa para almacenar en disco las calificaciones de todos los alumnos ma-
triculados en una determinada asignatura, y permitir consultar la calificación obtenida por un alumno.

Solución:

24. [pregunta_46.txt] La siguiente estructura se usa para almacenar la información correspondiente a los médicos
que tienen consulta en una clı́nica:
enum t i p o e s p e c i a l i d a d {
f a m i l i a r , pediatra , d i g e s t i v o , traumatologo
};
struct medico {
char nombre [ 4 0 ] ;
tipo especialidad especialidad ;
unsigned c o n s u l t a ;
};

Página 9 de 15
Preguntas varias. Nivel 2

Escribe un programa que lea de un fichero los datos de todos aquellos médicos que tienen como especialidad el
valor familiar y modifica su sala de consulta asignándole el valor 0.

Solución:

25. [pregunta_47.txt] Se dispone de un fichero con acceso directo para gestionar la comunidad de los pisos que
componen un bloque. Concretamente de cada piso se almacena la siguiente información:
enum t i p o t a m a n o {
apartamento = 1 , p i s o p e q u e n o , duplex , p i s o g r a n d e
};
struct p i s o {
unsigned numero ; // p i s o d e n t r o d e l b l o q u e
char nombre [ 4 0 ] ; // nombre d e l p r o p i e t a r i o
t i p o p i s o tamano ; // e l tamano d e l p i s o
unsigned a l q u i l a d o : 1 ;
unsigned g a r a j e : 1 ; // d i s p o n e o no de p l a z a de g a r a j e
f l o a t c u o t a ; // c u o t a mensual de comunidad
};

Escribe un programa que lea de dicho fichero los datos de todos aquellos pisos que disponen de plaza de garaje
y cuyo tamaño sea duplex o piso_grande, modificando su cuota al aumentarla un 10 por ciento.

Solución:

26. [pregunta_48.txt] Se dispone de un fichero con acceso directo para almacenar la información correspondiente
a las personas nacidas en una provincia. Para ello se usa la siguiente estructura:
struct t i p o \ f e c h a {
unsigned dia , mes , anno ;
};
struct ciudadano {
char n i f [ 9 ] ;
char nombre [ 4 0 ] ;
tipo fecha fecha nacimiento ;
unsigned s i g u e v i v o : 1 ;
unsigned t i e n e d e s c e n d i e n t e s : 1 ;
};

Escribe un programa que lea de dicho fichero y almacene en otro, también de acceso directo, solo el N.I.F. y la
fecha de nacimiento de todas aquellas personas que sigan vivas y que hayan nacido entre 1930 y 1936.

Solución:

27. [pregunta_49.txt] Escribe y prueba una función que devuelva un objeto de tipo empleado. Modifica dicha
función para que devuelva una referencia a un objeto y comparala con la anterior.

Solución:

Página 10 de 15
Preguntas varias. Nivel 2

28. [pregunta_50.txt] Escribir un programa de prueba que utilice un array dinámico de objetos de tipo empleado.

Solución:

29. [pregunta_51.txt] Implementar la clase cola_de_enteros (mediante un vector dinámico de enteros).

Solución:

30. [pregunta_52.txt] Analizar las variables y métodos necesarios para implementar la clase fecha.

Solución:

31. [pregunta_53.txt] Para desarrollar un programa de gestión de centros, implementar las clases alumno, profesor
y materia.

Solución:

32. [pregunta_54.txt] Implementar y probar un constructor de copias para la clase cola_de_enteros.

Solución:

33. [pregunta_55.txt] Sobrecargar los operadores < y > sobre la clase empleado para comparar salarios.

Solución:

34. [pregunta_56.txt] Para la clase fecha sobrecargar los operadores +, -, <, >, == y != Sobrecargar además
los operadores ++, -- para sumar y restar respectivamente un dı́a.

Solución:

35. [pregunta_57.txt] Añadir a la clase fecha del ejercicio anterior una función amiga para que dadas dos fechas
devuelva el número de dı́as de diferencia entre ambas.

Solución:

Página 11 de 15
Preguntas varias. Nivel 2

36. [pregunta_58.txt] Define una clase polinomio, formada por una serie de términos, donde cada término está for-
mado por un coeficiente y un exponente (3 x2 , coeficiente=3 exponente=2). Sobrecargar el operador + para sumar
dos polinomios, y sobrecargar el operador + mediante una función amiga para sumar a un polinomio un entero.

Solución:

37. [pregunta_59.txt] Define una clase punto y crea una función amiga suya para calcular la distancia entre dos
puntos.

Solución:

38. [pregunta_60.txt] Implementar una clase numero_telefono, con los datos prefijo y número. Sobrecargar el
extractor para leer un número en el formato (988)123456 y el insertor para visualizarlo por pantalla.

Solución:

39. [pregunta_61.txt] Definir insertores y extractores para las clases fecha, racional y polinomio definidas en
ejercicios anteriores.

Solución:

40. [pregunta_62.txt] Modificar la implementación de las clases alumno y profesor para utilizar herencia a partir
de una nueva clase persona.

Solución:

41. [pregunta_63.txt] Construir una nueva clase becario que herede sus propiedades de profesor y alumno.

Solución:

42. [pregunta_64.txt] Definir una jerarquı́a adecuada de clases para modelar diferentes tipos de viviendas que se
utilizarı́an en un programa de gestión de una inmobiliaria.

Solución:

43. [pregunta_65.txt] Añadir a la clase empleado su fecha de alta en la empresa. Utilizar la clase fecha imple-
mentada anteriormente y escribir un programa de prueba.

Página 12 de 15
Preguntas varias. Nivel 2

Solución:

44. [pregunta_66.txt] Diseña una función con dos argumentos que representan dos horas: inicial y final, y que
devuelve en segundos el tiempo transcurrido entre ellas. Cada hora se expresa mediante tres valores enteros:
hora, minutos y segundos. Esta función debe comprobar que la hora inicial no es mayor que la hora final. Escribe
un programa para probar dicha función.

Solución:

45. [pregunta_67.txt] Escribe un programa que contenga una función cuya misión es devolver en orden creciente
los tres números enteros que recibe.

Solución:

46. [pregunta_68.txt] Añadir a la clase becario un objeto de tipo materia. Tener en cuenta que la clase materia
utilice un constructor parametrizado y escribir un programa de prueba.

Solución:

47. [pregunta_69.txt] Define la clase linea formada por dos objetos de la clase punto

Solución:

48. [pregunta_70.txt] Dadas las clases persona, profesor y alumno, crea una lista de objetos de tipo persona.
Escribe un programa de prueba donde una misma lista esté compuesta por objetos de la clase alumno y profesor.

Solución:

49. [pregunta_71.txt] Añadir a la implementación de la clase alumno una lista de materias en las que está ma-
triculado. Escribir un programa de prueba que permita consultarlas.

Solución:

50. [pregunta_72.txt] Modificar el ejercicio anterior para poder calificar y consultar la nota de cada una de las
materias en las que el alumno esta matriculado.

Página 13 de 15
Preguntas varias. Nivel 2

Solución:

51. [pregunta_73.txt] Escribe un programa que, mediante una plantilla de funcion, determine el valor absoluto
de cualquier numero (int, float y double).

Solución:

52. [pregunta_74.txt] Implementa una funcion generica de ordenacion de un vector de elementos y pruebala con
diferentes tipos de datos.

Solución:

53. [pregunta_75.txt] Implementa una función genérica para localizar un elemento en un vector y pruebala con
diferentes tipos de datos.

Solución:

54. [pregunta_76.txt] Implementa la clase genérica conjunto. Pruebala en un ejemplo significativo.

Solución:

55. [pregunta_77.txt] Implementa la clase genérica arbol_binario y escribe un programa de prueba.

Solución:

56. [pregunta_78.txt] Modifica la implementación de la clase alumno para que contenga un vector de objetos de
tipo materia. Utiliza el contenedor vector de la STL.

Solución:

57. [pregunta_79.txt] Cambia el ejercicio anterior para utilizar el contenedor list de la STL.

Solución:

58. [pregunta_80.txt] Modifica la clase polinomio para que en la lista de términos se utilice la STL.

Página 14 de 15
Preguntas varias. Nivel 2

Solución:

59. [pregunta_81.txt] Utilizando la STL implementa un programa para gestión de citas en un centro médico.

Solución:

60. [pregunta_82.txt] Escribe un programa de prueba del contenedor asociativo set.

Solución:

61. [pregunta_83.txt] Escribe un programa donde utilices la función genérica para eliminar elementos repetidos
de un lista (unique())

Solución:

Página 15 de 15

Potrebbero piacerti anche