Y la culpa no era mía….
Ejercicios de Programación:
Ejercicios secuenciales
1) Dadas dos variables numéricas A y B, que el usuario debe teclear, se pide realizar un
algoritmo que intercambie los valores de ambas variables y muestre cuánto valen al final
las dos variables
2) Algoritmo que lea dos números, calculando y escribiendo el valor de su suma, resta,
producto y división.
3) Algoritmo para hallar el VOLUMEN y el AREA de un cilindro
4) Hacer un programa para convertir grados centígrados a Fahrenheit
5) Leer el sueldo de tres empleados y aplicarles un descuento del 10%, 12% y 15%. Mostrar
los descuentos.
6) Ingrese un monto de dinero a ahorrar en un banco, un porcentaje de interés anual y
cuanto se retiraría del banco tras un año.
7) Se ingresaran la cantidad de hombres, la cantidad de mujeres de un salón y el sistema
mostrará los porcentajes de hombres y mujeres.
8) Un alumno ingresará tres notas de exámenes, las cuales tiene un peso de 30%, 30% y 40%
respectivamente. Muestre el promedio ponderado final.
9) Una farmacia da el 10% de descuento a cualquier compra. Ingrese el monto de compra y
muestre el descuento en dinero y el total a pagar.
10) Se ingresará la hipotenusa y un cateto de un triángulo rectángulo. Muestre la longitud del
cateto restante.
11) Se ingresará el lado de un cuadrado. Debe calcular y mostrar el área que se haya entre el
cuadrado y una circunferencia inscrita en el cuadrado.
12) Ingresar las horas laboradas por un trabajador y su valor hora, con estos datos calcule su
sueldo bruto. Se le descontará 5% del sueldo bruto por afp. Muestre el sueldo bruto, el
descuento en dinero y el sueldo neto.
Ejercicios arreglos - array
1) Crea un array o arreglo unidimensional con un tamaño de 5, asígnale los valores numéricos
manualmente (los que quiera) y muéstralos por pantalla.
2) Modifica el ejercicio anterior para que insertes los valores numéricos con leer mediante
un bucle y los muestre por pantalla.
3) Crea un array o arreglo unidimensional con un tamaño de 10, inserta los valores
numéricos que desees de la manera que quieras y muestra por pantalla la media de
valores del array.
Y la culpa no era mía….
4) Crea un array o arreglo unidimensional donde tu le indiques el tamaño por teclado y crear
una función que rellene el array o arreglo con los múltiplos de un numero pedido por teclado.
Por ejemplo, si defino un array de tamaño 5 y elijo un 3 en la función, el array contendrá 3, 6, 9,
12, 15. Muestralos por pantalla usando otra función distinta.
5) Crea dos arrays o arreglos unidimensionales que tengan el mismo tamaño (lo pedirá por
teclado), en uno de ellos almacenaras nombres de personas como cadenas, en el otro array
o arreglo ira almacenando la longitud de los nombres, para ello puedes usar la función
LONGITUD(String). Muestra por pantalla el nombre y la longitud que tiene. Puedes usar
funciones si lo deseas.
6) Pedir valores numéricos en dos arrays distintos y almacenar el resultado de los valores de
cada posición (posición 0 del arreglo 1 + posición 0 del arreglo 2) y mostrar el contenido de
los 3 arreglos de esta forma. Valor pos 0 arreglo 1 + valor pos 0 arreglo 2 = valor pos 0
arreglo 3 valor pos 1 arreglo 1 + valor pos 1 arreglo 2 = valor pos 1 arreglo 3 …
7) Buscar un elemento dentro de un arreglo que nosotros le pedimos por teclado. Indicar las
posición donde se encuentra. Si hay más de uno, indicar igualmente la posición.
8) Pediremos los IDs (números) de alumnos de dos clases, álgebra y análisis. Queremos
mostrar todos los alumnos comunes en las dos asignaturas. Estos alumnos se guarden en
un tercer arreglo y que sea el que se muestre. También indica el número de alumnos que
se repiten.
9) Pedir por teclado el tamaño de un arreglo de números y pedir los valores numéricos con
los que se rellena. Los valores no se pueden repetir. Mostrar el arreglo con los valores al
final.
10) Suponga un array con N números enteros generados aleatoriamente y mostrados en
pantalla, N debe ser un número impar, mostrar en pantalla el valor que ocupa el centro del
array.
11) Suponga un array con N notas de 0 a 20, calcule el promedio de aprobados y el promedio
de los desaprobados e indique la cantidad de aprobados y desaprobados.
12) Suponga un array que contiene N notas de 0 a 20 generados aleatoriamente y mostradas
en pantalla, de acuerdo a la nota contenida, indique cuántos estudiantes son:
Deficientes 0-5
Regulares 6-10
Buenos 11-15
Y la culpa no era mía….
Excelentes 16-20
13) Realizar un programa con el siguiente menú:
1. Llenar Vector A de manera aleatoria.
2. Llenar Vector B de manera aleatoria.
3. Realizar C=A+B
4. Realizar C=B-A
5. Mostrar (Permitiendo al usuario elegir entre el Vector A, B, o C).
6. Salir. NOTA.
El rango de los números aleatorios para los Vectores será de [-100 a 100]. Validar opción 3, 4 y
mostrar C de 5. La longitud de los Vectores es la misma, por lo tanto solo se solicitará una vez.
14) Queremos calcular el número de billetes y monedas de una cantidad pasado por teclado.
Los billetes son: 500 €, 200 €, 100 €, 50 €, 20 €, 10 €, 5 €
Las monedas son: 2 €, 1 €, 0.5 €, 0.2 €, 0.1 €, 0.05 €, 0.02 €, 0.01 €
Recomiendo que las monedas las pasen a céntimos
15) Que lea 10 números por teclado, los almacene en un array y muestre la suma, resta,
multiplicación y división de todos.
16) Que rellene una matriz de 3x3 y muestre su traspuesta (la traspuesta se consigue
intercambiando filas por columnas y viceversa).
17) Que lea 10 números por teclado, los almacene en un array y los ordene de forma
ascendente.
18) Que rellene un array con 20 números aleatorios entre 0 y 30. Luego busque un número
concreto.
b) Que muestre los primeros 100 números de izquierda a derecha usando un array de dos
dimensiones, la última fila a mostrará la suma de sus respectivas columnas.
c) Que construya las primeras dos filas de un tablero de ajedrez : los peones con la letra P,
las torres con T, los caballos con C, los alfiles con A, el rey con R y la reina con M. Use
arreglo de dos dimensiones y muéstrelo.
d) Llene un arreglo de dos dimensiones con números al azar entre 0 y 9. Haga un código
para contar cuantos ceros aparecen por cada columna.
e) Llene un array de dos dimensiones números al azar y a continuación solicite un número de
fila. Debe devolver el mayor número de la fila.
f) Que se llene un matriz de dos dimensiones con elementos a azar entre 1 y 10 y muestre la
suma de los elementos de la diagonal principal N x N.
Y la culpa no era mía….
Ejercicios Objetos
1. Un teatro se caracteriza por su nombre y su dirección y en él se realizan 4 funciones al día.
Cada función tiene un nombre y un precio. Realice el diseño de clases e indique qué métodos
tendría cada clase, teniendo en cuenta que se pueda cambiar el nombre del teatro y el nombre
y precio de la función. Implemente dichas clases.
2. En una tienda cada factura se representa por su número y una serie de productos. Cada
producto se caracteriza por su código alfanumérico y su precio. Se pide:
a. Dibujar el diagrama de clases indicando las relaciones entre las mismas y los miembros
que hay en cada una. Debe incluir métodos para la consulta del número de factura y
el/los productos de la factura y métodos para actualización de los datos del/los
productos.
b. Implemente en Java dichas clases
c. Implemente un programa principal donde se imprima una factura con los siguientes
productos: (código: C1, precio: 24 euros), (código: H23, precio: 234 euros) y (código:
M30, precio: 109 euros). A continuación debe cambiarse el segundo producto de la
factura por el siguiente (código: K123, precio:247 euros) y volver a imprimir la factura
3. Escriba un programa que use un arreglo para gestionar una serie de libros identificados por su
código, título, numero de hojas y autor. El programa debe ser capaz de ir añadiendo libros a la
serie mantenida, buscar libros por el título o autor y de poder imprimir los títulos de toda la
serie cuando se le indique. Como ejemplo use los siguientes libros: “Niebla”, “La Metamorfosis”
y “El callejón de los milagros”
4. Construir una clase Cronometro que permita determinar el tiempo transcurrido entre dos
eventos y una clase PruebaCronometro que muestre su funcionamiento. Nota: puede
emplearse la rutina predefinida de Java [Link]() que devuelve el tiempo
actual del sistema en milisegundos.
5. Crea una clase Racional que permita trabajar con números racionales (fracciones). Incluye los
siguientes métodos: constructores (por defecto y parametrizado), accedentes, leer(), suma,
resta, multiplicación, división, comparaciones, copia() y print().
6. Crea una clase Rectangulo que modele rectángulos por medio de cuatro puntos (los vértices).
Dispondrá de dos constructores: uno que cree un rectángulo partiendo de sus cuatro vértices y
otro que cree un rectángulo partiendo de la base y la altura, de forma que su vértice inferior
izquierdo esté en (0,0). La clase también incluirá un método para calcular la superficie y otro
que desplace el rectángulo en el plano.
7. Crea una clase Cuenta (bancaria) con atributos para el número de cuenta (un entero largo), el
DNI del cliente (otro entero largo), el saldo actual y el interés anual que se aplica a la cuenta
(porcentaje). Define en la clase los siguientes métodos:
Y la culpa no era mía….
a. Constructor por defecto y constructor con DNI, saldo e interés
b. Accedentes y mutadores (Getters y Setters). Para el número de cuenta no habrá
mutador (Setter).
c. actualizarSaldo(): actualizará el saldo de la cuenta aplicándole el interés diario (interés
anual dividido entre 365 aplicado al saldo actual).
d. ingresar(double): permitirá ingresar una cantidad en la cuenta.
e. retirar(double): permitirá sacar una cantidad de la cuenta (si hay saldo).
f. Método que nos permita mostrar todos los datos de la cuenta.
g. El número de cuenta se asignará de forma correlativa a partir de 100001, asignando el
siguiente número al último asignado.
8. Desarrolla una clase Cafetera con atributos _capacidadMaxima (la cantidad máxima de café que
puede contener la cafetera) y _cantidadActual (la cantidad actual de café que hay en la
cafetera). Implementa, al menos, los siguientes métodos:
a. Constructor predeterminado: establece la capacidad máxima en 1000 (c.c.) y la actual
en cero (cafetera vacía).
b. Constructor con la capacidad máxima de la cafetera; inicializa la cantidad actual de café
igual a la capacidad máxima.
c. Constructor con la capacidad máxima y la cantidad actual. Si la cantidad actual es mayor
que la capacidad máxima de la cafetera, la ajustará al máximo.
d. Accedentes y mutadores (Getters y Setters).
e. llenarCafetera(): pues eso, hace que la cantidad actual sea igual a la capacidad.
f. servirTaza(int): simula la acción de servir una taza con la capacidad indicada. Si la
cantidad actual de café “no alcanza” para llenar la taza, se sirve lo que quede.
g. vaciarCafetera(): pone la cantidad de café actual en cero.
h. agregarCafe(int): añade a la cafetera la cantidad de café indicada.
9. Crea una clase NIF que se usará para mantener DNIs con su correspondiente letra. Los atributos
serán el número de DNI (entero largo) y la letra que le corresponde. La clase dispondrá de los
siguientes métodos:
a. Constructor predeterminado que inicialice el no de DNI a 0 y la letra a espacio en blanco
(será un NIF no válido).
b. Constructor que reciba el DNI y establezca la letra que le corresponde.
c. Getters y Setters para el número de DNI (que ajuste automáticamente la letra).
d. leer(): que pida el número de DNI (ajustando automáticamente la letra)
e. Método que nos permita mostrar el NIF (ocho dígitos, un guión y la letra en mayúscula;
por ejemplo: 00395469-F)
f. La letra se calculará con un método auxiliar (privado) de la siguiente forma: se obtiene
el resto de la división entera del número de DNI entre 23 y se usa la siguiente tabla para
obtener la letra que corresponde: 0 – T | 1 - R | 2 - W | 3 - A | 4 - G | 5 - M | 6 – Y | 7 -
F | 8 - P | 9 - D | 10 - X | 11 – B | 12 - N | 13 – J | 14 - Z | 15 – S | 16 – Q | 17 - V | 18 –
H | 19 - L | 20 – C | 21 - K | 22 – E
10. Crea una clase Fecha con atributos para el día, el mes y el año de la fecha. Incluye, al menos, los
siguientes métodos:
Y la culpa no era mía….
a. Constructor predeterminado con el 1-1-1900 como fecha por defecto.
b. Constructor parametrizado con día, mes y año.
c. leer(): pedirá al usuario el día (1 a 31), el mes (1 a 12) y el año (1900 a 2050).
d. bisiesto(): indicará si el año de la fecha es bisiesto o no.
e. diasMes(int): devolverá el número de días del mes que se le indique (para el año de la
fecha).
f. valida(): comprobará si la fecha es correcta (entre el 1-1-1900 y el 31-12-2050); si el día
no es correcto, lo pondrá a 1; si el mes no es correcto, lo pondrá a 1; y si el año no es
correcto, lo pondrá a 1900. Será un método auxiliar (privado). Este método se llamará
en el constructor parametrizado y en leer().
g. Accedentes y mutadores (Getters y Setters).
h. corta(): mostrará la fecha en formato corto (02-09-2003).
i. diasTranscurridos(): devolverá el número de días transcurridos desde el 1-1-1900 hasta
la fecha.
j. diaSemana(): devolverá el día de la semana de la fecha (0 para domingo, ..., 6 para
sábado). El 1-1-1900 fue domingo.
k. larga(): mostrará la fecha en formato largo, empezando por el día de la semana (martes
2 de septiembre de 2003).
l. fechaTras(long): hará que la fecha sea la correspondiente a haber transcurrido los días
que se indiquen desde el 1-1-1900.
m. diasEntre(Fecha): devolverá el número de días entre la fecha y la proporcionada.
n. siguiente(): pasará al día siguiente.
o. anterior(): pasará al día anterior.
p. copia(): devolverá un clon de la fecha.
q. igualQue(Fecha): indica si la fecha es la misma que la proporcionada.
r. menorQue(Fecha): indica si la fecha es anterior a la proporcionada.
s. mayorQue(Fecha): indica si la fecha es posterior a la proporcionada.
11. Crea las siguientes clases (cada una en su archivo):
a. Motor: con métodos para arrancar el motor y apagarlo.
b. Rueda: con métodos para inflar la rueda y desinflarla.
c. Ventana: con métodos para abrirla y cerrarla.
d. Puerta: con una ventana y métodos para abrir la puerta y cerrar la puerta.
e. Coche: con un motor, cuatro ruedas y dos puertas; con los métodos que te parezcan
adecuados
12. Desarrolla una clase Cancion con los siguientes atributos:
a. titulo: una variable String que guarda el título de la canción.
b. autor: una variable String que guarda el autor de la canción. y los siguientes métodos:
c. Cancion(String, String): constructor que recibe como parámetros el título y el autor de
la canción (por este orden).
d. Cancion(): constructor predeterminado que inicializa el título y el autor a cadenas
vacías.
e. dameTitulo(): devuelve el título de la canción.
Y la culpa no era mía….
f. dameAutor(): devuelve el autor de la canción.
g. ponTitulo(String): establece el título de la canción.
h. ponAutor(String): establece el autor de la canción.