Está en la página 1de 19

Ejercicios:

2b): Escribe un programa que pregunte la hora, y conteste con un mensaje: “Hora introducida
ok. Son las 18:30:00.

Ejercicio 2: Leyendo letras Escribe un programa que pregunte al usuario sus iniciales y
conteste diciendo: “Sus iniciales son: A.J.R. (por ejemplo)”.

Ejercicio 2: Leyendo números con decimales Escribe un programa que pregunte al usuario su
altura aproximada, sus iniciales y conteste diciendo: “Sus iniciales son: A.J.R. y su altura 1.34
(por ejemplo)”

Ejercicio 1: Cálculo de precios con descuento Escribe un programa que pregunte el precio, el
tanto por ciento de descuento, y te diga el precio con descuento. Por ejemplo, si el precio que
introduce el usuario es 300 y el descuento 20, el programa dirá que el precio final con
descuento es de 240.

Ejercicio 2: Cálculo de área y perímetro Escribe un programa que pregunte al usuario los dos
lados de un rectángulo y presente por pantalla el cálculo del perímetro (suma de los lados) y el
área (base por altura).

Ejercicio 3: Cambio de dólares a euros. Suponiendo que 1 euro = 1.33250 dólares. Escribe un
programa que pida al usuario un número de dólares y calcule el cambio en euros.

Ejercicio 4: Cálculo de perímetro de circunferencia, área del círculo, y volumen de la esfera.


Suponiendo que pi = 3.1416. Escribe un programa que pida al usuario que introduzca el radio,
y presente por pantalla el cálculo del perímetro de la circunferencia (2*pi*r), el área del círculo
(pi*r2 ), y el volumen de la esfera (V = 4*pi*r3 /3).

Ejercicio 5: Pasar de días, horas y minutos a segundos. Escribe un programa que pida al
usuario los siguientes datos: días, horas y minutos. Y le conteste con la cantidad de segundos
totales que son esos datos.

Ejercicio 6: Pasar de segundos a días, horas y minutos. Escribe un programa que pida al
usuario que introduzca los segundos, y le conteste diciéndole el número de días, horas,
minutos y segundos que son..

Ejercicio 7: Solución de la ecuación de segundo grado. Escribir un programa que pida por
teclado los tres coeficientes (a, b y c) de la ecuación ax 2 +bx+c=0 y calcule las dos soluciones
suponiendo que ambas serán reales (es decir que la raíz queda positiva). Nota:
x1,2=(a±sqrt(b2 -4ac))/2, sqrt es una función que devuelve la raíz cuadrada, para poder
invocarla es necesario poner en la cabecera del programa: #include

Ejercicio 8: Cálculo de la resistencia equivalente. Escribir un programa que pida por teclado
dos resistencias y calcule y presente la resistencia equivalente en paralelo
(Req=(R1*R2)/(R1+R2)).

Ejercicio 9: Media de cuatro números. Escribir un programa que pida por teclado cuatro
números y calcule y presente la media de los cuatro.

Ejercicio 6: Bucles 1. Realizar un programa que imprima los números del 1 al 57. Repetir este
ejercicio con todos los tipos de bucles (for, while, y do-while).

Ejercicio 7: Bucles 2. Realizar un programa que pida al usuario un número y presente los
números del 1 al número que introdujo el usuario. Repetir este ejercicio con todos los tipos de
bucles (for, while, y do-while).
Ejercicio 8: Bucles 3. Realizar un programa que pida al usuario dos números y presente los
números del primero número al segundo que introdujo el usuario. Repetir este ejercicio con
todos los tipos de bucles (for, while, y do-while).

Ejercicio 9: Bucles4. Realizar un programa que imprima por pantalla tántos asteriscos como
diga el usuario. Al ejecutarse debe preguntar “Cuantos asteriscos desea imprimir?”, leer el
número que introduce el usuario e imprimir los asteriscos. Ejercicio 9: Condición if 1. Realizar
un programa que pida al usuario dos números y diga cuál es el mayor y cuál el menor.

Ejercicio 10: Condición if 2. Realizar un programa que pida tres números y diga cuáles son
pares y cuáles impares.

Ejercicio 11: Condición if 3. Realizar un programa que pregunte al usuario el momento del día
con una letra (mmañana, t-tarde, n-noche), el sexo con otra letra (m-masculino, f-femenino).
El programa dirá: buenos días, tardes, o noches (según el momento) señor o señora según el
sexo.

Ejercicio 12: Condición if 4. Realizar un programa que pida tres números y diga cuál es el
mayor, cuál es el segundo mayor, y cuál es el menor.

Ejercicio 13: Bucles con if 1. Realizar un programa que pida al usuario dos números y presente
los números impares que hay desde el primer número al segundo que introdujo el usuario.

Ejercicio 14: Bucles con if 2. Realizar un programa que pida al usuario dos números y una
letra: “i” ó “p”. El programa presentará los números pares (si se pulsó la “p”) ó impares (si se
pulsó la “i”) que hay desde el primer número al segundo que introdujo el usuario. Si se pulsa
alguna tecla distinta de “p” ó “i”, el programa no imprime ningún número.

Ejercicio 15: Bucles con if 3. Realizar un programa que pida que se pulse la letra “C” si se pulsa
cualquier otra tecla que no sea la “C”, dice “letra incorrecta” y vulva a pedir que se pulse la
letra “C”. Cuando se pulsa la tecla “C” el programa dice “gracias” y termina. Ejercicio 16:
Bucles con if 4. Realizar un programa que pida que se dos números consecutivos (3 y 4; 9 y 10
etc.). Cuando se introducen tres números consecutivos dice “gracias” y termina. Mientras no
se introduzcan tres números consecutivos el programa sigue pidiendo números
indefinidamente.

Ejercicio 17: Bucles con if 5. Realizar un programa que pida que se tres números consecutivos
(3, 4 y 5; 9, 10 y 11, etc.). Cuando se introducen tres números consecutivos dice “gracias” y
termina. Mientras no se introduzcan tres números consecutivos el programa sigue pidiendo
números indefinidamente.

Ejercicio 18: Bucles con if 6. Ecuación de 2º grado. Realizar un programa que pida los tres
coeficientes de una ecuación de 2º grado y calcule las dos soluciones aunque estas sean
números imaginarios. Después de calcular las soluciones, el programa dará la opción de seguir
resolviendo ecuaciones: Continuar (pulse C)? / Salir (pulse S)?.

Ejercicio 19: Bucles con if7. Ecuación de 2º grado. Realizar un programa que pida dos
números y presente por pantalla la ecuación de segundo grado que tiene por soluciones estos
dos números. Ejemplo: 5 y -3, la ecuación sería (x-5) (x+3) = x2 -2x-15, los coeficientes son 1, -2
y -15. El programa permitirá repetir esta operación tantas veces como el usuario quiera,
introduciendo números diferentes, hasta que decida terminar el programa (por ejemplo
pulsando ‘S’).

Ejercicio 20: Factorial. Realizar un programa que pida un número y calcule su factorial.
Ejercicio 21: Potencias. Realizar un programa que pida la base y el exponente y calcule la
potencia.

Ejercicio 22: Divisores de un número. Realizar un programa que pida un número y diga todos
sus divisores.

Ejercicio 23: Divisores comunes de dos números. Realizar un programa que pida dos números
y diga sus divisores comunes.

Ejercicio 24: Máximo común divisor. Realizar un programa que pida dos números y diga su
máximo común divisor.

Ejercicio 25: Simplificar fracciones. Realizar un programa que pida el numerador y


denominador de una fracción y devuelva la fracción simplificada.
Ejercicio 5: Media, mayor y menor de un conjunto fijo. Realizar un programa que pida las
notas de 40 alumnos por pantalla y muestre un menú de opciones: 1. Listar notas, 2.Calcular
la media, 3.Calcular el menor, 4.Calcular el mayor.

Ejercicio 6: Media, mayor y menor de un conjunto prefijado. Igual que el apartado anterior
pero en vez de 20 alumnos ahora el número de alumnos se le preguntará al usuario al iniciar el
programa, este número no podrá superar los 100 alumnos (controlar que el usuario introduzca
un número menor que 100).

Ejercicio 7: Media, mayor y menor. De un conjunto variable. Igual que el apartado anterior
pero ahora el número de alumnos empieza desde cero y se añade al menú la opción 5.Agregar
nota, con la que el usuario puede ir agregando las notas de una en una.

Ejercicio 8: Arrays multidimensionales. Edificio1. Se quiere controlar el número de habitantes


de un eidificio con 6 pisos y 4 puertas (A, B, C, y D) en cada piso. Realizar un programa que
pida al usuario que introduzca el número de habitantes de cada puerta del edificio. El
programa debe decir la vivienda (piso y puerta) que más habitantes tiene del edificio.

Ejercicio 9: Arrays multidimensionales. Edificio2. Se quiere controlar el número de habitantes


de un eidificio con 6 pisos y 4 puertas (A, B, C, y D) en cada piso. Realizar un programa que
pida al usuario que introduzca el número de habitantes de cada puerta del edificio. El
programa debe decir el piso que más habitantes tiene de todo el edificio.

Ejercicio 10: Arrays multidimensionales. Edificio3. Se quiere controlar el número de


habitantes de un eidificio con 6 pisos y 4 puertas (A, B, C, y D) en cada piso. Realizar un
programa que pida al usuario que introduzca el número de habitantes de cada puerta del
edificio. El programa debe decir la puerta que más habitantes tiene de todo el edificio.

Ejercicio 11: Arrays multidimensionales. Edificio3. Se quiere controlar el número de


habitantes de un eidificio con 6 pisos y 4 puertas (A, B, C, y D) en cada piso. Realizar un
programa que pida al usuario que introduzca el número de habitantes de cada puerta del
edificio. El programa debe mostrar la media de habitantes de cada piso.

Ejercicio 12: Arrays multidimensionales. Rectas en el plano. Se quiere representar rectas en


un plano de números enteros. El plano será un array de 100x100 caracteres. El programa
pedirá que se introduzcan los tres coeficientes (números enteros) de una recta de la forma
ax+by+c=0, representará los puntos de la recta como asteriscos en la matriz, y presentará por
pantalla dicha matriz.

Ejercicio 3: Estructuras. Crear un programa que pida al usuario los nombres, edades, y alturas,
de 10 jugadores. Posteriormente le presentará un menú que le permita: 1. Listar los nombres
de los jugadores; 2. Listar las alturas de los jugadores; 3. Listar las edades de los jugadores.
Ejercicio 4: Estructuras. Crear un programa que pida al usuario los nombres, edades, y alturas,
de 10 jugadores. Posteriormente le presentará un menú que le permita: 1. Listar los nombres
de los jugadores; 2. Listar las alturas de los jugadores; 3. Listar las edades de los jugadores; 4.
Buscar un jugador por su nombre y presentar su altura y su edad; 5. Indicar la edad y el
nombre del jugador más alto de la lista.

Ejercicio 5: Estructuras. Crear una estructura que contenga las coordenadas de un punto del
plano (dos coordenadas (x,y), números reales). Realizar un programa que pida las
coordenadas de tres puntos del plano, y calcule el perímetro del triángulo que forman (Nota:
la distancia entre dos puntos de coordenadas (a,b) y (c,d) se calcula por el teorema de
pitágoras como sqrt((c-a)*(c-a) + (d-b)*(d-b)), para usar la funcion sqrt debe incluir la librería
math.h.).

Ejercicio 1: Reserva Dinámica (malloc, free). Crear un programa que pregunte al usuario
cuántos caracteres desea introducir, reserve espacio para dicho número de caracteres, le
permita al usuario introducirlos desde teclado, y por último se los muestre todos seguidos.

Ejercicio 2: Reserva Dinámica (malloc, free). Crear un programa que pregunte al usuario
cuántos caracteres desea introducir, reserve espacio para dicho número de caracteres, le
permita al usuario introducirlos desde teclado, y por último se los muestre todos seguidos en
el orden inverso al que fueron introducidos.

Ejercicio 3: Reserva Dinámica (malloc, free). Repetir el ejercicio 3 pero en vez de caracteres
con números reales.

Ejercicio 4: Reserva Dinámica (malloc, free). Repetir el ejercicio 3 pero en vez de caracteres
con números enteros.

Ejercicio 5: Reserva Dinámica (malloc, free). Repetir el ejercicio 3 pero en vez de caracteres
con cadenas de caracteres de hasta 50 caracteres (reservando 50 posiciones para cada
cadena).

Ejercicio 6: Reserva Dinámica (malloc, free). Repetir el ejercicio 3 pero en vez de caracteres
con cadenas de caracteres de hasta 50 caracteres, reservando las posiciones estrictamente
necesarias para cada cadena.

Ejercicio 7: Reserva Dinámica (realloc, free). Crear un programa que permita al usuario
introducir, de uno en uno, cuantos caracteres quiera. Es decir, después de introducir un
carácter el programa preguntará: otro(Y/N)? y mientras el usuario elija “Y” permitirle que siga
introduciendo nuevos caracteres de forma ilimitada.

Ejercicio 8: Reserva Dinámica (realloc, free). Repetir el ejercicio 7 pero en vez de caracteres
con números reales.
Ejercicio 9: Reserva Dinámica (realloc, free). Repetir el ejercicio 7 pero en vez de caracteres
con números enteros.

Ejercicio 10: Reserva Dinámica (realloc, free). Repetir el ejercicio 7 pero en vez de caracteres
con cadenas de caracteres de hasta 50 caracteres (reservando 50 posiciones para cada
cadena).

Ejercicio 11: Reserva Dinámica (realloc, free). Repetir el ejercicio 7 pero en vez de caracteres
con cadenas de caracteres de hasta 50 caracteres, reservando las posiciones estrictamente
necesarias para cada cadena.

Ejercicio 1: Lector de ficheros de texto. Crear un programa que abra un fichero llamado
“prueba.txt” (previamente creado con el block de notas y guardado en la misma carpeta
donde este el programa) y que muestre el contenido del mismo por pantalla carácter a
carácter. Ejercicio 2: Lector de ficheros de texto con guiones. Crear un programa que abra un
fichero llamado “prueba.txt” (previamente creado con el block de notas y guardado en la
misma carpeta donde este el programa) y que muestre el contenido del mismo con los
caracteres separados por guiones “-“

Ejercicio 3: Lector de ficheros de texto a mayúsculas. Crear un programa que abra un fichero
llamado “prueba.txt” (previamente creado con el block de notas y guardado en la misma
carpeta donde este el programa) y que muestre el contenido del mismo por pantalla pasando
a mayúscula los caracteres que estén en minúscula.

Ejercicio 4: Editor de ficheros de texto. Crear un programa que cree un fichero llamado
salidatexto.txt y permita al usuario escribir en él todo el texto que desee. Dejará de introducir
texto cuando introduzca un asterisco “*”.

Ejercicio 5: Lector de ficheros con números de línea. Crear un programa que abra un fichero
llamado “prueba.txt” (previamente creado con el block de notas y guardado en la misma
carpeta donde este el programa) y que muestre el contenido del mismo por pantalla por líneas
y cada línea con su número de línea seguido de “>>”.

Ejercicio 6: Lector de ficheros con números de línea. Crear un programa que abra un fichero
llamado “prueba.txt” (previamente creado con el block de notas y guardado en la misma
carpeta donde este el programa) y que muestre el contenido del mismo por pantalla por líneas
y cada línea con su número de línea.

Ejercicio 7: Copiar ficheros. Crear un programa capaz de copiar un fichero (word por ejemplo,
o cualquier otro tipo) en otro. El fichero creado se llamará “copia_de” y el nombre del archivo
a copiar. El fichero a copiar lo puede elegir el usuario, y si no existe debe tener la opción de
escribir otro nombre hasta que escriba el nombre de un fichero que exista. Nota: Para trabajar
con ficheros es interesante configurar el explorador de windows para que no oculte las
extensiones de los archivos para tipos de archivos conocidos. Esta opción suele encontrarse
en Herramientas -> opciones de carpeta -> Ver. Las extensiones de los archivos son usadas
por el sistema operativo para poder informar al usuario acerca del tipo de archivo de que se
trata sin necesidad de conocer lo que hay dentro. Si creamos un archivo con la extensión .doc
por ejemplo, lo etiquetará como un archivo de word, si le ponemos .pdf creerá que es un pdf e
intentará abrirlo con acrobat cuando hagamos doble clic, etc. Para nuestras prácticas
podemos inventar una extensión que esté sin utilizar, por ejemplo .mio, así reconoceremos
nuestros ficheros y los diferenciaremos del resto.

Ejercicio 8: Copiar ficheros cambiando caracteres. Crear un programa igual que el de el


ejercicio anterior pero esta vez el fichero de copia tiene que crearse con todas las letras en
mayúsculas.

Ejercicio 9: Crear base de datos. Crear un programa para gestionar una agenda de clientes,
para una empresa, con los campos: “nombre (50 caracteres)”, “direccion (100 caraceres)”,
“telefono (entero sin signo)”, “estado_pagos (float con signo)”. El estado de pagos será un
número negativo indicando la cantidad de dinero que debe el cliente. El programa debe
presentar al usuario un menú con las siguientes opciones: 1) Agregar cliente. 2) ver datos de
todos los clientes. El programa trabajará con un archivo (clientes.mio por ejemplo) que debe
crear la primera vez que se ejecute el programa.

Ejercicio 10: Continuación 1. Añadir al programa anterior la opción de buscar clientes por
teléfono. Esta opción pedirá al usuario el teléfono del cliente deseado y mostrará los demás
datos de dicho cliente por pantalla. Si no lo encuentra, avisará de ello y volverá al menú
principal.

Ejercicio 11: Continuación 2. Añadir al programa anterior la opción de modificar los datos de
un cliente y guardarlos de nuevo en el fichero.

Ejercicio 12: Continuación 3. Añadir al programa anterior la opción de listar solamente los
clientes con deudas (es decir, aquellos en los que “estado_pagos” es menor que cero). .

Ejercicio 13: Continuación 4. Añadir al programa anterior la opción de borrar un cliente de la


agenda.

Ejercicio 15: Continuación 5. Añadir al programa anterior la opción de trabajar con varias
agendas. Al iniciar el programa el usuario podrá elegir el nombre del fichero que quiere cargar.
En el menú del programa aparecerá la opción de cambiar de fichero de trabajo. Esta opción
serviría si el usuario tiene varias empresas o si quiere guardar los datos de los clientes de
distintas secciones en varias bases de datos, por ejemplo.

Ejercicio 1: Lista simple 1. Realizar un programa que permita guardar números en una lista.
Debe tener un menu con las opciones, añadir elemento e imprimir todos.
Ejercicio 2: Lista simple 2. Añadir al programa del ejercicio anterior la posibilidad de buscar
un elemento de la lista.

Ejercicio 3: Lista simple 3. Añadir al programa del ejercicio anterior la posibilidad de eliminar
un elemento de la lista.

Ejercicio 4: Árbol binario 4. Repetir los tres ejercicios anteriores utilizando un árbol binario.

Ejercicios orientados a objetos


Si tienes alguna duda, recuerda que puedes consultarnos escribiendo un comentario en este
post o enviándonos un e-mail a administrador@discoduroderoer.es

1) Crea una clase llamada Cuenta que tendrá los siguientes atributos: titular y cantidad (puede
tener decimales).

El titular será obligatorio y la cantidad es opcional. Crea dos constructores que cumpla lo
anterior.

Crea sus métodos get, set y toString.

Tendrá dos métodos especiales:

 ingresar(double cantidad): se ingresa una cantidad a la cuenta, si la cantidad


introducida es negativa, no se hará nada.
 retirar(double cantidad): se retira una cantidad a la cuenta, si restando la cantidad
actual a la que nos pasan es negativa, la cantidad de la cuenta pasa a ser 0.

2) Haz una clase llamada Persona que siga las siguientes condiciones:

 Sus atributos son: nombre, edad, DNI, sexo (H hombre, M mujer), peso y altura. No
queremos que se accedan directamente a ellos. Piensa que modificador de acceso es el
más adecuado, también su tipo. Si quieres añadir algún atributo puedes hacerlo.
 Por defecto, todos los atributos menos el DNI serán valores por defecto según su tipo (0
números, cadena vacía para String, etc.). Sexo sera hombre por defecto, usa una
constante para ello.
 Se implantaran varios constructores:
o Un constructor por defecto.
o Un constructor con el nombre, edad y sexo, el resto por defecto.
o Un constructor con todos los atributos como parámetro.
 Los métodos que se implementaran son:
o calcularIMC(): calculara si la persona esta en su peso ideal (peso en kg/(altura^2
en m)), si esta fórmula devuelve un valor menor que 20, la función devuelve un -1,
si devuelve un número entre 20 y 25 (incluidos), significa que esta por debajo de
su peso ideal la función devuelve un 0 y si devuelve un valor mayor que 25
significa que tiene sobrepeso, la función devuelve un 1. Te recomiendo que uses
constantes para devolver estos valores.
 esMayorDeEdad(): indica si es mayor de edad, devuelve un booleano.
 comprobarSexo(char sexo): comprueba que el sexo introducido es
correcto. Si no es correcto, sera H. No sera visible al exterior.
 toString(): devuelve toda la información del objeto.
 generaDNI(): genera un número aleatorio de 8 cifras, genera a partir de
este su número su letra correspondiente. Este método sera invocado
cuando se construya el objeto. Puedes dividir el método para que te sea
más fácil. No será visible al exterior.
 Métodos set de cada parámetro, excepto de DNI.
Ahora, crea una clase ejecutable que haga lo siguiente:

 Pide por teclado el nombre, la edad, sexo, peso y altura.


 Crea 3 objetos de la clase anterior, el primer objeto obtendrá las anteriores variables
pedidas por teclado, el segundo objeto obtendrá todos los anteriores menos el peso y la
altura y el último por defecto, para este último utiliza los métodos set para darle a los
atributos un valor.
 Para cada objeto, deberá comprobar si esta en su peso ideal, tiene sobrepeso o por
debajo de su peso ideal con un mensaje.
 Indicar para cada objeto si es mayor de edad.
 Por último, mostrar la información de cada objeto.
Puedes usar métodos en la clase ejecutable, para que os sea mas fácil.

3) Haz una clase llamada Password que siga las siguientes condiciones:

 Que tenga los atributos longitud y contraseña . Por defecto, la longitud sera de 8.

 Los constructores serán los siguiente:


o Un constructor por defecto.
 Un constructor con la longitud que nosotros le pasemos. Generara una contraseña
aleatoria con esa longitud.

 Los métodos que implementa serán:


o esFuerte(): devuelve un booleano si es fuerte o no, para que sea fuerte debe
tener mas de 2 mayúsculas, mas de 1 minúscula y mas de 5 números.
o generarPassword(): genera la contraseña del objeto con la longitud que tenga.
o Método get para contraseña y longitud.
o Método set para longitud.
Ahora, crea una clase clase ejecutable:

 Crea un array de Passwords con el tamaño que tu le indiques por teclado.


 Crea un bucle que cree un objeto para cada posición del array.
 Indica también por teclado la longitud de los Passwords (antes de bucle).
 Crea otro array de booleanos donde se almacene si el password del array de Password
es o no fuerte (usa el bucle anterior).
 Al final, muestra la contraseña y si es o no fuerte (usa el bucle anterior). Usa este simple
formato:
contraseña1 valor_booleano1

contraseña2 valor_bololeano2

) Crearemos una supeclase llamada Electrodomestico con las siguientes características:

 Sus atributos son precio base, color, consumo energético (letras entre A y F) y peso.
Indica que se podrán heredar.
 Por defecto, el color sera blanco, el consumo energético sera F, el precioBase es de 100
€ y el peso de 5 kg. Usa constantes para ello.
 Los colores disponibles son blanco, negro, rojo, azul y gris. No importa si el nombre esta
en mayúsculas o en minúsculas.
 Los constructores que se implementaran serán
o Un constructor por defecto.
o Un constructor con el precio y peso. El resto por defecto.
o Un constructor con todos los atributos.

 Los métodos que implementara serán:


o Métodos get de todos los atributos.
o comprobarConsumoEnergetico(char letra): comprueba que la letra es correcta,
sino es correcta usara la letra por defecto. Se invocara al crear el objeto y no sera
visible.
o comprobarColor(String color): comprueba que el color es correcto, sino lo es usa
el color por defecto. Se invocara al crear el objeto y no sera visible.
o precioFinal(): según el consumo energético, aumentara su precio, y según su
tamaño, también. Esta es la lista de precios:

Letra Precio

A 100 €

B 80 €

C 60 €

D 50 €

E 30 €
Letra Precio

F 10 €

Tamaño Precio

Entre 0 y 19 kg 10 €

Entre 20 y 49 kg 50 €

Entre 50 y 79 kg 80 €

Mayor que 80 kg 100 €

Crearemos una subclase llamada Lavadora con las siguientes características:

 Su atributo es carga, ademas de los atributos heredados.


 Por defecto, la carga es de 5 kg. Usa una constante para ello.
 Los constructores que se implementaran serán:
o Un constructor por defecto.
o Un constructor con el precio y peso. El resto por defecto.
o Un constructor con la carga y el resto de atributos heredados. Recuerda que
debes llamar al constructor de la clase padre.

 Los métodos que se implementara serán:


o Método get de carga.
o precioFinal():, si tiene una carga mayor de 30 kg, aumentara el precio 50 €, sino
es así no se incrementara el precio. Llama al método padre y añade el código
necesario. Recuerda que las condiciones que hemos visto en la clase
Electrodomestico también deben afectar al precio.
Crearemos una subclase llamada Television con las siguientes características:

 Sus atributos son resolución (en pulgadas) y sintonizador TDT (booleano), ademas de
los atributos heredados.
 Por defecto, la resolución sera de 20 pulgadas y el sintonizador sera false.
 Los constructores que se implementaran serán:
o Un constructor por defecto.
o Un constructor con el precio y peso. El resto por defecto.
o Un constructor con la resolución, sintonizador TDT y el resto de atributos
heredados. Recuerda que debes llamar al constructor de la clase padre.

 Los métodos que se implementara serán:


o Método get de resolución y sintonizador TDT.
o precioFinal(): si tiene una resolución mayor de 40 pulgadas, se incrementara el
precio un 30% y si tiene un sintonizador TDT incorporado, aumentara 50
€. Recuerda que las condiciones que hemos visto en la clase Electrodomestico
también deben afectar al precio.
Ahora crea una clase ejecutable que realice lo siguiente:

 Crea un array de Electrodomesticos de 10 posiciones.


 Asigna a cada posición un objeto de las clases anteriores con los valores que desees.
 Ahora, recorre este array y ejecuta el método precioFinal().
 Deberás mostrar el precio de cada clase, es decir, el precio de todas las televisiones por
un lado, el de las lavadoras por otro y la suma de los Electrodomesticos (puedes crear
objetos Electrodomestico, pero recuerda que Television y Lavadora también son
electrodomésticos). Recuerda el uso operador instanceof.
Por ejemplo, si tenemos un Electrodomestico con un precio final de 300, una lavadora de 200
y una televisión de 500, el resultado final sera de 1000 (300+200+500) para electrodomésticos,
200 para lavadora y 500 para televisión.

5) Crearemos una clase llamada Serie con las siguientes características:

 Sus atributos son titulo, numero de temporadas, entregado, genero y creador.


 Por defecto, el numero de temporadas es de 3 temporadas y entregado false. El resto
de atributos serán valores por defecto según el tipo del atributo.
 Los constructores que se implementaran serán:
o Un constructor por defecto.
o Un constructor con el titulo y creador. El resto por defecto.
o Un constructor con todos los atributos, excepto de entregado.

 Los métodos que se implementara serán:


o Métodos get de todos los atributos, excepto de entregado.
o Métodos set de todos los atributos, excepto de entregado.
o Sobrescribe los métodos toString.
Crearemos una clase Videojuego con las siguientes características:

 Sus atributos son titulo, horas estimadas, entregado, genero y compañia.


 Por defecto, las horas estimadas serán de 10 horas y entregado false. El resto de
atributos serán valores por defecto según el tipo del atributo.
 Los constructores que se implementaran serán:
o Un constructor por defecto.
o Un constructor con el titulo y horas estimadas. El resto por defecto.
o Un constructor con todos los atributos, excepto de entregado.

 Los métodos que se implementara serán:


o Métodos get de todos los atributos, excepto de entregado.
o Métodos set de todos los atributos, excepto de entregado.
o Sobrescribe los métodos toString.
Como vemos, en principio, las clases anteriores no son padre-hija, pero si tienen en común,
por eso vamos a hacer una interfaz llamada Entregable con los siguientes métodos:

 entregar(): cambia el atributo prestado a true.


 devolver(): cambia el atributo prestado a false.
 isEntregado(): devuelve el estado del atributo prestado.
 Método compareTo (Object a), compara las horas estimadas en los videojuegos y en
las series el numero de temporadas. Como parámetro que tenga un objeto, no es
necesario que implementes la interfaz Comparable. Recuerda el uso de los casting de
objetos.
Implementa los anteriores métodos en las clases Videojuego y Serie. Ahora crea una
aplicación ejecutable y realiza lo siguiente:

 Crea dos arrays, uno de Series y otro de Videojuegos, de 5 posiciones cada uno.
 Crea un objeto en cada posición del array, con los valores que desees, puedes usar
distintos constructores.
 Entrega algunos Videojuegos y Series con el método entregar().
 Cuenta cuantos Series y Videojuegos hay entregados. Al contarlos, devuélvelos.
 Por último, indica el Videojuego tiene más horas estimadas y la serie con mas
temporadas. Muestralos en pantalla con toda su información (usa el método
toString()).

6) Crear una clase Libro que contenga los siguientes atributos:


– ISBN

– Titulo

– Autor

– Número de páginas

Crear sus respectivos métodos get y set correspondientes para cada atributo. Crear el método
toString() para mostrar la información relativa al libro con el siguiente formato:

«El libro con ISBN creado por el autor tiene páginas»

En el fichero main, crear 2 objetos Libro (los valores que se quieran) y mostrarlos por pantalla.

Por último, indicar cuál de los 2 tiene más páginas.

7) Vamos a realizar una clase llamada Raices, donde representaremos los valores de una
ecuación de 2º grado.
Tendremos los 3 coeficientes como atributos, llamémosles a, b y c.
Hay que insertar estos 3 valores para construir el objeto.
Las operaciones que se podrán hacer son las siguientes:
 obtenerRaices(): imprime las 2 posibles soluciones
 obtenerRaiz(): imprime única raíz, que será cuando solo tenga una solución posible.
 getDiscriminante(): devuelve el valor del discriminante (double), el discriminante tiene
la siguiente formula, (b^2)-4*a*c
 tieneRaices(): devuelve un booleano indicando si tiene dos soluciones, para que esto
ocurra, el discriminante debe ser mayor o igual que 0.
 tieneRaiz(): devuelve un booleano indicando si tiene una única solución, para que esto
ocurra, el discriminante debe ser igual que 0.
 calcular(): mostrara por consola las posibles soluciones que tiene nuestra ecuación, en
caso de no existir solución, mostrarlo también.
Formula ecuación 2º grado: (-b±√((b^2)-(4*a*c)))/(2*a)
Solo varia el signo delante de -b

8) Queremos representar con programación orientada a objetos, un aula con estudiantes y un


profesor.
Tanto de los estudiantes como de los profesores necesitamos saber su nombre, edad y sexo.
De los estudiantes, queremos saber también su calificación actual (entre 0 y 10) y del profesor
que materia da.
Las materias disponibles son matemáticas, filosofía y física.
Los estudiantes tendrán un 50% de hacer novillos, por lo que si hacen novillos no van a clase
pero aunque no vayan quedara registrado en el aula (como que cada uno tiene su sitio).
El profesor tiene un 20% de no encontrarse disponible (reuniones, baja, etc.)
Las dos operaciones anteriores deben llamarse igual en Estudiante y Profesor (polimorfismo).
El aula debe tener un identificador numérico, el número máximo de estudiantes y para que
esta destinada (matemáticas, filosofía o física). Piensa que más atributos necesita.
Un aula para que se pueda dar clase necesita que el profesor esté disponible, que el profesor
de la materia correspondiente en el aula correspondiente (un profesor de filosofía no puede
dar en un aula de matemáticas) y que haya más del 50% de alumnos.
El objetivo es crear un aula de alumnos y un profesor y determinar si puede darse clase,
teniendo en cuenta las condiciones antes dichas.
Si se puede dar clase mostrar cuantos alumnos y alumnas (por separado) están aprobados de
momento (imaginad que les están entregando las notas).
NOTA: Los datos pueden ser aleatorios (nombres, edad, calificaciones, etc.) siempre y cuando
tengan sentido (edad no puede ser 80 en un estudiante o calificación ser 12).

9) Nos piden hacer un programa orientado a objetos sobre un cine (solo de una sala) tiene un
conjunto de asientos (8 filas por 9 columnas, por ejemplo).
Del cine nos interesa conocer la película que se está reproduciendo y el precio de la entrada en
el cine.

De las películas nos interesa saber el título, duración, edad mínima y director.

Del espectador, nos interesa saber su nombre, edad y el dinero que tiene.

Los asientos son etiquetados por una letra (columna) y un número (fila), la fila 1 empieza al
final de la matriz como se muestra en la tabla. También deberemos saber si está ocupado o no
el asiento.
8A8B8C8D8E8F8G8H8I
7A7B7C7D7E7F7G7H7I
6A6B6C6D6E6F6G6H6I
5A5B5C5D5E5F5G5H5I
4A4B4C4D4E4F4G4H4I
3A3B3C3D3E3F3G3H3I
2A2B2C2D2E2F2G2H2I
1A1B1C1D1E1F1G1H1I

Realizaremos una pequeña simulación, en el que generaremos muchos espectadores y los


sentaremos aleatoriamente (no podemos donde ya este ocupado).
En esta versión sentaremos a los espectadores de uno en uno.

Solo se podrá sentar si tienen el suficiente dinero, hay espacio libre y tiene edad para ver la
película, en caso de que el asiento este ocupado le buscamos uno libre.
Los datos del espectador y la película pueden ser totalmente aleatorios.

10) Vamos a hacer una baraja de cartas españolas orientado a objetos.

Una carta tiene un número entre 1 y 12 (el 8 y el 9 no los incluimos) y un palo (espadas, bastos,
oros y copas)

La baraja estará compuesta por un conjunto de cartas, 40 exactamente.

Las operaciones que podrá realizar la baraja son:

 barajar: cambia de posición todas las cartas aleatoriamente


 siguienteCarta: devuelve la siguiente carta que está en la baraja, cuando no haya más o
se haya llegado al final, se indica al usuario que no hay más cartas.
 cartasDisponibles: indica el número de cartas que aún puede repartir
 darCartas: dado un número de cartas que nos pidan, le devolveremos ese número de
cartas (piensa que puedes devolver). En caso de que haya menos cartas que las pedidas,
no devolveremos nada pero debemos indicárselo al usuario.
 cartasMonton: mostramos aquellas cartas que ya han salido, si no ha salido ninguna
indicárselo al usuario
 mostrarBaraja: muestra todas las cartas hasta el final. Es decir, si se saca una carta y
luego se llama al método, este no mostrara esa primera carta.

11) Estando en un grupo de amigos, se planea hacer una porra de la liga de fútbol. A nosotros
se nos ocurre hacer un programa en POO para simular como podría desarrollarse la porra.

Cada jugador de la porra, pone un 1 euro cada jornada y decide el resultado de los partidos
acordados.

Si nadie acierta en una jornada los resultados, el bote se acumula.

En principio, deben acertar el resultado de dos partidos para llevarse el dinero del bote de la
porra.
Todos empiezan con un dinero inicial que será decidido por el programador (ya sea como
parámetro o como constante). Si el jugador no tiene dinero en una jornada no podrá jugar la
porra.

Para esta versión, entre jugadores podrán repetir resultados repetidos, por lo que el jugador
que primero diga ese resultado (tal como estén de orden) se llevara primero el bote.

Los resultados de la porra serán generados aleatoriamente, tanto los de jugador como los de
los partidos (no es necesario nombre, solo resultados).

Al final del programa, se deberá mostrar el dinero que tienen los jugadores y el número de
veces que han ganado.

Para este ejercicio, recomiendo usar interfaces (no hablo de interfaces gráficas) para las
constantes y métodos que sean necesarios.

12) Vamos a hacer el juego de la ruleta rusa en Java.

Como muchos sabéis, se trata de un número de jugadores que con un revolver con un sola
bala en el tambor se dispara en la cabeza.

Las clases a hacer son:

 Revolver:
o Atributos:
 posición actual (posición del tambor donde se dispara, puede que esté la
bala o no)
 posición bala (la posición del tambor donde se encuentra la bala)
Estas dos posiciones, se generaran aleatoriamente.

 Funciones:
o disparar(): devuelve true si la bala coincide con la posición actual
o siguienteBala(): cambia a la siguiente posición del tambor
o toString(): muestra información del revolver (posición actual y donde está la bala)
 Jugador:
o Atributos
 id (representa el número del jugador, empieza en 1)
 nombre (Empezara con Jugador más su ID, «Jugador 1» por ejemplo)
 vivo (indica si está vivo o no el jugador)
o Funciones:
 disparar(Revolver r): el jugador se apunta y se dispara, si la bala se dispara,
el jugador muere.
o Juego:
 Atributos:
 Jugadores (conjunto de Jugadores)
 Revolver
 Funciones:
 finJuego(): cuando un jugador muere, devuelve true
 ronda(): cada jugador se apunta y se dispara, se informara del estado
de la partida (El jugador se dispara, no ha muerto en esa ronda, etc.)
El número de jugadores será decidido por el usuario, pero debe ser entre 1 y 6. Si no está en
este rango, por defecto será 6.

En cada turno uno de los jugadores, dispara el revólver, si este tiene la bala el jugador muere
y el juego termina.

Aunque no lo haya comentado, recuerda usar una clase ejecutable para probarlo.

13) Nos piden hacer una un programa que gestione empleados.

Los empleados se definen por tener:

 Nombre
 Edad
 Salario
También tendremos una constante llamada PLUS, que tendrá un valor de 300€

Tenemos dos tipos de empleados: repartidor y comercial.

El comercial, aparte de los atributos anteriores, tiene uno más llamado comisión (double).

El repartidor, aparte de los atributos de empleado, tiene otro llamado zona (String).

Crea sus constructores, getters and setters y toString (piensa como aprovechar la herencia).

No se podrán crear objetos del tipo Empleado (la clase padre) pero si de sus hijas.

Las clases tendrán un método llamado plus, que según en cada clase tendrá una
implementación distinta. Este plus básicamente aumenta el salario del empleado.

 En comercial, si tiene más de 30 años y cobra una comisión de más de 200 euros, se le
aplicara el plus.
 En repartidor, si tiene menos de 25 y reparte en la “zona 3”, este recibirá el plus.
Puedes hacer que devuelva un booleano o que no devuelva nada, lo dejo a tu elección.

Crea una clase ejecutable donde crees distintos empleados y le apliques el plus para
comprobar que funciona.

14) Nos piden hacer que gestionemos una serie de productos.

Los productos tienen los siguientes atributos:

 Nombre
 Precio
Tenemos dos tipos de productos:

 Perecedero: tiene un atributo llamado días a caducar


 No perecedero: tiene un atributo llamado tipo
Crea sus constructores, getters, setters y toString.

Tendremos una función llamada calcular, que según cada clase hará una cosa u otra, a esta
función le pasaremos un numero siendo la cantidad de productos

 En Producto, simplemente seria multiplicar el precio por la cantidad de productos


pasados.
 En Perecedero, aparte de lo que hace producto, el precio se reducirá según los días a
caducar:
o Si le queda 1 día para caducar, se reducirá 4 veces el precio final.
o Si le quedan 2 días para caducar, se reducirá 3 veces el precio final.
o Si le quedan 3 días para caducar, se reducirá a la mitad de su precio final.
 En NoPerecedero, hace lo mismo que en producto
Crea una clase ejecutable y crea un array de productos y muestra el precio total de vender 5
productos de cada uno. Crea tú mismo los elementos del array.

14) Nos piden hacer un almacén, vamos a usar programación orientado a objetos.

En un almacén se guardan un conjunto de bebidas.

Estos productos son bebidas como agua mineral y bebidas azucaradas (coca-cola, fanta, etc).
De los productos nos interesa saber su identificador (cada uno tiene uno distinto), cantidad de
litros, precio y marca.

Si es agua mineral nos interesa saber también el origen (manantial tal sitio o donde sea).

Si es una bebida azucarada queremos saber el porcentaje que tiene de azúcar y si tiene o no
alguna promoción (si la tiene tendrá un descuento del 10% en el precio).

En el almacén iremos almacenado estas bebidas por estanterías (que son las columnas de la
matriz).

Las operaciones del almacén son las siguientes:

 Calcular precio de todas las bebidas: calcula el precio total de todos los productos del
almacén.
 Calcular el precio total de una marca de bebida: dada una marca, calcular el precio
total de esas bebidas.
 Calcular el precio total de una estantería: dada una estantería (columna) calcular el
precio total de esas bebidas.
 Agregar producto: agrega un producto en la primera posición libre, si el identificador
esta repetido en alguno de las bebidas, no se agregará esa bebida.
 Eliminar un producto: dado un ID, eliminar el producto del almacén.
 Mostrar información: mostramos para cada bebida toda su información.
Puedes usar un main para probar las funcionalidades (añade productos, calcula precios,
muestra información, etc)

https://www.discoduroderoer.es/ejercicios-propuestos-y-resueltos-programacion-orientado-a-objetos-java/

También podría gustarte