0% encontró este documento útil (0 votos)
4 vistas41 páginas

Ejercicios de Programación en Java

El documento detalla una serie de ejercicios de programación en Java, incluyendo la definición de clases como Automovil y LineaComanda, así como la implementación de funciones para calcular distancias y valores totales. Se presentan ejemplos específicos de instanciación de objetos y la creación de arrays, además de un juego de pruebas para verificar la funcionalidad. También se incluyen ejercicios sobre codificación de caracteres y la definición de segmentos en un plano cartesiano.

Cargado por

goediocampo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas41 páginas

Ejercicios de Programación en Java

El documento detalla una serie de ejercicios de programación en Java, incluyendo la definición de clases como Automovil y LineaComanda, así como la implementación de funciones para calcular distancias y valores totales. Se presentan ejemplos específicos de instanciación de objetos y la creación de arrays, además de un juego de pruebas para verificar la funcionalidad. También se incluyen ejercicios sobre codificación de caracteres y la definición de segmentos en un plano cartesiano.

Cargado por

goediocampo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programación I

Curso 11/12
685778A
Apellidos: Nombre: Grupo:
Num. Matricula:
Prueba de Conocimientos Mínimos
13/01/12
Se supone que un automóvil viene definido por tres datos: su modelo (String), la capacidad
de su deposito en litros (int) y su consumo en litros por cada 100 km (double).

Se pide:

a) Define el tipo/clase Automovil en Java. (1 punto)

// Un automévil.
class Automovil(
String modelo; // modelo del automóvil
int deposito; // capacidad del depósito (en litros)
double consumo; // consumo (en litros por cada 100km)

Automovil (String valorModelo, int valorDeposito, int valorConsumo) (


modelo = valorModelo;
sito o = valorDeposito;
consumo = valorConsumo;

b) Define en Java dos ejemplares de tipo Automovil, con nombres auto1 y auto2, que
representen, respectivamente, un Ford con un depósito de 40 litros y un consumo de 6
litros a los 100 y un Volkswagen con depósito de 50 litros y consumo de 5 litros a los 100.
(1 punto)

Automovil autol = new Automovil (new String("Ford"), 40, 6):


Auto! vil auto2 = new Automovil (new String("VW"), 50, 5);
c) Define en Java la funcion distancia, que calcula la distancia en km (int) que un
automóvil puede alcanzar con el depósito lleno. (2 puntos)

//POST: Calcula la distancia en km que un


//automóvil puede alcanzar con el depósito
//1leno.
//EJEMPLOS:
"aA distancia(autol) = (40*100)/6 = 666
/7 distancia(auto2) = 50*100/5 = 1000
//PLANTILLA:
s ... [Link]
1/ ... [Link]
/1 ... [Link]
int distancia(Automovil automovil) |
return ([Link] * 100) / (int)[Link];
}
d) Define en Java un ejemplar de array de Automovil(es), llamado autos2, formado por los
dos automóviles definidos en el apartado b). (1 punto)

Automovil[] autos2 = (autol, auto2};

las
e) Define la función distancias, que recibe un array de automóviles y genera otro con
distancias que puede alcanzar cada uno con el depósito lleno. (4 puntos)

//POST: Crea un array con las distancias que puede alcanzar


//cada automóvil del array autos con el depósito lleno.
//POST: resultado = MAP a EN autos . distancia(a)
//EJEMPLOS:
// distancias([]) = []
// distancias([autol]) = [666]
// distancias([autol, auto2]) = [666, 1000]
//PLANTILLA:
1- autos -- Array de Automovil(es)
11 autos[i] ... -- Automovil
// ... [Link] ... -- int
// Plantilla "for":
/7
// int[) resultado = INICIAL;
// for (INICIAR; !ES_FINAL; AVANZAR)
// resultado[i] = COMPUTO(autos[i]):
int[] distancias (Automovil[] autos) (
int[] resultado = new int [[Link]];
for (int i = 0; i<=[Link]-1; i = i+1)
resultado[i] = distancia(autos[i]);
return resultado;
f) Define un juego de pruebas para la función anterior. (1 punto)

//PRUEBAS:
boolean pruebaDistancias =
distancias (autos0) .length==0 s£
distancias (autos1) .length==1 &&
distancias (autos1) [0]==666 £6
distancias (autos2) .length==2 &&
distancias (autos2) [0]
distancias (autos2) [1]

NOTAS:

e Noes necesario escribir la especificación, ni ejemplos, ni plantilla.


Se pueden definir funciones auxiliares si se considera necesario.
e Lacalificación de este ejercicio será de Apto o No Apto. Para poder obtener un Apto
será necesario tener una puntuación mínima de 5 puntos en esta prueba.
e Queda prohibida toda comunicación entre alumnos durante la realización de la
prueba. El incumplimiento de este punto supondrá un No Apto inmediato.
e El tiempo para realizar la prueba es de 40 minutos.
Programación |
Curso 11/12

Apellidos: Nombre: Grupo: Num. Matricula:

Prueba Final de Julio


11/07/12
SOLUCIÓN

Se quiere realizar un programa para la gestión de un restaurante. Se supone que una comanda se
compone de una colección de líneas. Cada línea de la comanda viene definido por tres datos: el concepto
o nombre del producto (String), el número de unidades pedidas de ese producto (int) y el precio que tiene
en euros (double).

la siguiente manera:
Así, por ejemplo, una comanda formada por cuatro lineas vendría dada de

Sopa agripicante -1-3.45


Empanadillas vegetales - 2 - 3.95
Cerveza - 1-2.25
Café-1- 1.45

Se pide:

) Define el tipo/clase LineaComanda en Java. (1 punto)

// Un línea de la comanda de un restaurante.


class LineaComanda (
String concepto; // producto pedido por el cliente
int unidades; // número de unidades pedidas
double preci // precio (en euros)

LineaComanda (String valorConcepto,


int valorUnidades,
double valorPrecio) (
concepto = valorConcepto;
unidades = valorUnidades;
precio = valorPrecio;
b) Define en Java dos ejemplares de tipo LineaComanda, con nombres lineaComanda1 y lineaComandaz,
que representen, respectivamente, las dos primeras líneas de la comanda del ejemplo. (1 punto)

LineaComanda lineaComandal = E a
new LineaComanda
(new String("Sopa agripicante"), 1, 3.45);
LineaComanda lineaComanda2 = new LineaComanda (
new String("Empanadillas vegetales"), 2, 3.95);

<) Define en Java la funcion valor, que calcula el valor que tiene en euros una línea de la comanda.
Recibe por tanto como parámetro de entrada un dato de tipo LineaComanda (2 puntos)

//POST: Calcula el valor que tiene en euros


//una línea de la comanda.
//EJEMPLOS:
77 valor (lineaComanda1)
// valor(lineaComanda2) E 395 =7
//PLANTILLA:
// ... [Link] ...
/ [Link]
/7 [Link] ...
double valor (LineaComanda lineaComanda)
retuzn [Link] * (
[Link];
) N : í

d) Define en Java un ejemplar de array de LineaComan


comanda del ejemplo. (1 punto) da(s), lla ) llamado comandad, que representa la

LineaComanda lineaCom
a anda
"da3 3 =- new Lineacoma,
new Strlnq nda (
("Ceerza"),
LineaComanda lineaComandad 1 25)
= new
new String("Cafen Lineaco, manda (
LineaComanda(] comanda4 - Uineaé¿…;'dliw'í
ndal, lineaComan
daZ,
lineaComanda3, lineaComandad4);

&) Define la función total, que recibe una comanda representada por un array de LineaComandals) y
calcula el valor total de la misma. (4 puntos)

//POST: Calcula el valor total de una comanda


double total (LineaComanda[] comanda) (
double resultado = 0.0;
for (int i = 0; i<=[Link]-1; i++)
resultado = resultado + valor (comanda[i]);
return resultado;

) Define un juego de pruebas para la función anterior. (1 punto)

LineaComanda[] comanda0 = ();


LineaComanda[] comandal = (lineaComandal) ;
comanda2 = (lineaComandal, lineaComanda2);
LineaComanda[]

//PRUEBAS:
boolean pruebaTotal =
total (comanda0
total (comandal E
total (comanda2) .35 &&
total (comanda4) .05;
Ejercicio 4. Define la función cuantasNormales, que recibe un array de tensiones y calcula
cuántas son normales. (3 puntos)

int cuantasNormales (Tension[] col)


{
int resultado = 0;
for (int i = 0; i < [Link]; i++)
if (esNormal (col[i]))
resultado = resultado + 1;
return resultado;
Ejercicio 5. Dado el siguiente programa en Java:

class Codificacion (

string verCIChar (char(] col) |


String resultado = "";
for (int i = 0; i < [Link]; i++)
if (colli] e
resultado = resultado + col[i];
return resultado;
»
boolean esVocal (char x) (
return (x AT 11 (x B =)
(x b <0 SN BN 'U');
)
char[] codificar (char[] pal) (
char[] aux = new char([Link]];
int i = 0;
[Link]-1;
0; k < [Link]-1;
if (esVocal (pal[k]))
if (esVocal (pal[k+1))) (
aux[i] pallk);
aux[i+1] = palík+1];

else (
aux[i] = palík); ETSINF
aux[i) = pal(k+l];
i=i+l;
i=3-1 BIBLIOTECA
DESCUELA TECHICAo Supriugn -
INGFNITENS
else4 if (esVocal (pallk+1])) |
aux[i] = palík+1);
aux(j] = pallk);
Tm
de j
)
else (
aux(j] = pal[k];
aux[j-1] = pallk+l];
j=j-2:
U
if (pal.lengtht2 != 0)
aux[i] = [Link]-1];
return aux;
)
char[] nombreI = ('P','E', 'D','R',' A AL U NEG
char[] nombreP = ('J','U','A','N'];
String pruebal = verCIChar (codificar (nombrel));:
String prueba2 = verCIChar (codificar (nombreP));

a) ¿Qué hace la función codificar? (1 punto)

Deja en el lado izquierdo del array resultado las vocales de pal en el


mismo orden en el que vienen y deja en el lado derecho del array resultado
las consonantes vienen.
de pal en el orden inverso a como
b) Si le pasas a la función tu nombre sin espacios en blanco y en mayusculas, ¿qué devuelve? (1
punto)

Si ejecutamos en el panel de interacciones:


> Codificacion codP = new Codificacion ();
El resultado para un nombre ejemplo como “PEDROJUAN"será:
> [Link]
"EOUANJRDP"

Ejercicio 6. Dado el siguiente programa en Java:

class Racionall 1 class cuestionable |


2 int num; :
a int den; 3 int sinton = $;
a a int telon =
$ Racional(int valorNum, int valorDen) | $ — Racional níson = new Racional(3, 4);
num = valorNum; % Racional simpar = quelonio(sinton, nisonl;
? den = valorDen; 2
DR ¢ Racional quelonio(int i, Racional
s ) , int telon = 55;
. imis1l;
u [Link] = panum + 17
2 [Link] = [Link] + 1;
2 return e;

6 string astring(Racional r) |
" ceturn "(* + [Link] + ", * + [Link] 4 ")U;

Si ejecutamos:

Cuestionable cue = new Cuestionable();

¿A qué valores se evaluarán las siguientes expresiones? (1 punto)

[Link] 0

[Link] (cue. simpar) £ (47.:5) *

[Link] 5

[Link] ([Link]) 2114 0"

NOTAS: i E
e Noes necesario escribir la especificación, ni ejemplos, ni plantilla.
e Se pueden definir funciones auxiliares si se considera necesario.
e El tiempo para realizar la prueba es de 1 hora y 15 minutos.
Programación
Curso 2013/2014

| Apellidos, Nombre:
Grupo:

| Evall - SOLUCIÓN
31/10/2013

| Ejercicio 1
|
| Dada la siguiente definición de tipo
//Tipo Punto
//Representa un punto del plano real.
class Punto (
double abscisa;
double ordenada;
Punto () (
Punto (double x, double y) {
abscisa = x;
ordenada = y;
¥
| }
| 1) Define un tipo Segmento como una linea acotada por dos puntos del plano cartesiano. (1 punto)

class Segmento
{
Punto pi;
Punto p2;
Segmento (){}
Segmento (Punto pp1, Punto pp2)
í
pl = ppl;
P2 = PP2;
}
D

e los siguientes segmentos


2) Define dos objetos de tipo Segmento que representen respectivament
(2,4);
» El formado por el origen de coordenadas y el punto
e El formado por el punto (-1,-1) y el (-3,2).
(1 punto)

Punto p00 = new Punto(0.0, 0.0);


Punto p24 = new Punto(2.0, 4.0);
Segmento s1 = new Segmento(p00, p29) ;
Punto pi1 = new Punto(-1.0, -1.0);
Punto p32 = new Punto(-3.0, 2.0);
Segmento s2 = new Segmento(p11, p32) ;
3) Desa olla una función puntoMedio que determine el punto medio de un segmento. (3 puntos)

/** FUNCION puntoMedio (Segmento s) ---> Punto


* PRE: cierto
* POST: resultado es el punto que tiene como abscisa la semisuma de
* las abscisas de los extremos pi y p2 de "s" y como ordenada,
* la semisuma de las ordenadas de los extremos pl y p2 de "s"
*/
Punto puntoMedio (Segmento s) {
double x = ([Link] + [Link]) / 2.0;
double y = ([Link] + [Link]) / 2.0;
return new Punto(x,y);
>

Dadas las siguientes definiciones de funciones y de pruebas

l{)oolean iguales (Punto ppl, Punto pp2)

return ([Link] == [Link]) && ([Link] == [Link]) ;

Zoolean what (Segmento s1, Segmento s2)

; return iguales (puntoMedio(s1), puntoMedio(s2));

l}:oolean pruebal = what(s1, s2);


boolean prueba2 = what(s3, s4);
4) Tomando s1 y s2 como los objetos de tipo Segmento definidos anteriormente y suponiendo que s3 y s4
son los definidos respectivamente por los puntos (2,1), (4,-1) y los puntos (3.2). (3.-2),
indica qué valores se
almacenan en pruebal y en prueba2 . (1 punto)

pruebal =
what (s1, s2) =
iguales(puntoMedio(s1), puntoMedio(s2)) =
iguales (puntoMedio(new Segmento(p00, p24)),
puntoMedio(new Segmento(p11, p32))) =
iguales (new Punto((0 + 2) / 2.0, (0 + 4) / 2.0),
new Punto((-1 + -3) / 2.0, (-1 + 2) / 2.0)) =
iguales (new Punto(1, 2), new Punto(-2, 0.5)) =
false
prueba2 =
what (s3, s4) =
iguales (puntoMedio(s3), puntoMedio(s4)) =
iguales (puntoMedio (new Segmento(new Punto(2,1), new Punto(4,-1))),
puntoMedio(new Segmento(new Punto(3,2), new Punto(3,-2))) =
iguales(new Punto(3, 0), new Punto(3, 0)) =
true

5) Indica qué hace la función what. (1 punto)

Devuelve true si y sólo si los dos segmentos forman haz, es decir,


si sus puntos medios coinciden.
Ejercicio 2
Para una aplicación de gestión académica se necesita desarrollar una función calificacion que determine el código
alfabético (char) correspondiente a una calificación numérica (double) según la siguiente tabla

Calificación | Código

[9.0, 10.0] B
[7.0, 8.9] N
[5.0, 6.9] A
[0, 4.9] S

1) Indica qué resultado devuelve la funcién calificación al recibir como datos de entrada las siguientes califica-
ciones: 2, 4.9, 5, 8.9, 9.0. Añade algún ejemplo más. (1 punto)

calificacion(2) = ’S’
calificacion(4.9) = ’S’
calificacion(5) = ’A’
calificacion(8.9) = *N
calificacion(9) = °B’
calificacion(3) = ’S’
calificacion(6) = ’A’
calificacion(6.9) = ’A’
calificacion(7) = N?
calificacion(8) = "N»
calificacion(9.5) = ’B’

2) Define la función calificación en Java (2 puntos)

//PRE: n EN [0.0, 10.0]


Determina el código alfabético correspondiente a
//POST:
una calificación numérica "n" según la siguiente tabla:
//
/7 n EN [9.0, 10.0] --> ’B’
// n EN [7.0, 8.9] --> N’
ZA n EN [5.0, 6.9] --> ’A’
/ n EN [0, 4.9] -> 9
char calificacion (double 1)
p
if (n<5)
return ’S’;
else if (n<7)
return ’A’;
else if (n<9)
return ’N’;
else
return ’B’;
Programacíón 1
Curso 13/14

Apellidos, Nombre:
Grupo:
Num. Matricula:

Eval2
17/01/2013

SOLUCIÓN

Ejercicio 1

En el juego del dominó las fichas que se utilizan están divididas en dos cuadrados, el izquierdo y el derecho,
tupla! Ficha
cada uno de los cuales lleva marcados de uno a seis puntos, o no lleva ninguno. Define un tipo
que represente una ficha del dominó. (0,5 puntos)

//Una ficha del dominó.


class Ficha {
int iz; //Valor izquierdo de la ficha;
int de; //Valor derecho de la ficha;
Ficha () £ )
Ficha (int valorIz, int valorDe) {
iz = valorlz;
de = valorDe;
>
}

blancaDoble (0 puntos en los


Define datos como variables de tipo Ficha que representen las siguientes fichas:
el cuadrado izquierdo y 1 en el derecho y una ficha
dos cuadrados), una ficha blancaPito con 0 puntos en
(0,5 puntos)
cincoSeis con 5 puntos en el cuadrado izquierdo y 6 en el derecho.

Ficha blancaDoble = new Ficha(0, 0);


Ficha blancaPito = new Ficha(0, 1);
Ficha cincoSeis = new Ficha(5, 6);

Dado el siguiente programa

class Ejercicio
í
int change (int m, int n)
{
m=(m+10) 47 +1;
"

n=(n+10) %7;
return n;
>
I También conocido como registro u objeto i
Ficha whose (int n, Ficha f)
{
D= n+ 103
[Link] = change([Link], [Link]);
return f;
}
String watch (Ficha f)
{
return "(" + [Link] + ", " 4 f do + " 7
>
Ficha f = new Ficha(5, 6);
int n = 7;
String pruebal = watch(whose(n, f));
}

Indica: (a) el resultado de la variable pruebal; (b) el


contenido de la variable n tras ejecutar pruebal y (c)
la variable f tras ejecutar pruebal. (1 punto) d

(a) (2, 6)
(b) 7
() (2, 6)

Define un array que contenga las tres fichas de dominó que definiste previamente
en el orden dado y otro qu
esté vacío. (1 punto)

Ficha[] serie3 = fblancaDoble, blancaPito, cincoSeis);


Ficha[] vacio = {};

Define un visualizador para el array de fichas. (1 punto)

String aString (Fichal] a)


{
String s = "( ";
for (int i=0; i<=[Link]-2; i++)
s =s + watch(a[i]) + ", ";
if ([Link]!=0)
s = s + watch([Link]-1));
return s + " 3";
Ejerciciu 2
En el juego del Dominó dos fichas sólo pueden colocarse juntas cuando los cuadrados adyacentes tengan los
siguiendo esta
mismos puntos. Se dice que una serie de fichas es correcta si todas sus fichas están colocadas
regla
Suponiendo que un array represen ta la serie de fichas que están encima de la mesa en un momento dado,
| definir una función serieCorrecta que devuelva cierto si y solo si la serie de fichas que recibe como parámetro
de entrada es correcta y falso en caso contrario
| Dada la ficha seisBlanca (con 6 puntos en el cuadrado izquierdo y 0 en el derecho) indica qué devolverá la
función serieCorrecta si recibe como arrays de fichas:

1. El array vacio.

2. El array formado por las fichas blancaDoble, blancaPito, cincoSeis y seisBlanca en ese orden.

3. El array formado por las fichas cincoSeis, seisBlanca, blancaDoble y blancaPito en ese orden

(1 punto)

1. true
2. false
3. true

Define la función serieCorrecta en Java. (3 puntos)

boolean serieCorrecta (Fichal] serie)


{
boolean esCorrecta = true;
int i = 0;
while (esCorrecta &k i <= [Link]-2)
i
if (serie[i].de != serie[i+1].iz)
esCorrecta = false;
else
i =1
}
return esCorrecta;

ÁT5

RIBLINTECA
Ejercicio 3 í
Dadas las siguientes funciones

boolean flop (char c)


{
return ’A’<=c && c<=7>;
+
char[] fly (char[] a, int i, int j
e
char t = a[i);
ali] = alj];
al =t:
return a;
>
char[] flow (char[] a, int pos)
T
for (int i=[Link]-1; i>=pos+1; i--)
if ( '(ali-1] <= ali]) & !flop(ali-1])
&g !flop(al[il) )
a = fly(a, i-1, i);
return a;
}
char(] flaw (char[] a)
T
for (int i=0; i<[Link]; i++)
a = flow(a, i);
return a;

}
Indica cuál es el valor devuelto por flaw si
recibiera como argumento tu nombre y tus
blanco entre ellos y con la letra inicial del nombr apellidos (sin espacios &
e y de los apellidos en mayúscula y el resto en minús
las letras ñ y Ñ como gn y GN. Es decir, un nombr culas). Trata
e como LuisRobleAñoso debe tratarse como
(1 punto) LuisRobleAgnoso.

Para:

nombre = { ?L?, *u?, ’i’, ?9?,


"R?, 707 ”b”, ?17, e,
"A? g, Y, 707, s, 707 )
Devuelve:

flaw (nombre) --> { °L’, ?i?, >8?, »»,


R, ?b?, 7e?, 110, o7,
W, ? 1, 707 707 787)

Indica qué hace flaw: (1 punto)

Ordena de menor a mayor orden alfabético las


letras minúsculas de cada palabra de a. Cada
separada por una letra mayúscula. Las letras palabra viene
mayúsculas se dejan donde están. a no puede
Le contener el carácte!
programación |
Curso 13/14

Apellidos, Nombre:
Grupo:
Num. Matricula:

Examen Final de Julio - SOLUCIÓN


2/07/2014

Ejercicio 1
Para una aplicación de música en la que se manejan canciones se necesita representar para cada una la siguiente
informacion:
* El título como una cadena de caracteres de tamaño 20.

* El tamaño de la canción en kbytes (kb), representado por un número real.


* La duración de la canción como un dato de tipo Horario, con atributos minutos y segundos, ambos de
tipo entero.

Dada la representacion en Java del Horario como

//Tipo Horario.
//Tiempo transcurrido en minutos y segundos.
class Horario
T
int minutos; // minutos
int segundos; // segundos
Horario (int valorMinutos, int valorSegundos)
{
minutos = valorMinutos;
segundos = valorSegundos;
}
+
define un tipo tupla o tipo objeto Cancion que represente la canción definida
previamente. (1 punto)

class Cancion
{
String titulo;
double tamaño;
Horario duracion;
double valorTamaño, Horario valorDuracion)
Cancion (String valorTitulo,
{
titulo = valorTitulo;
tamafio = valorTamafio;
duracion = valorDuracion;
¥
¥
*
Ejercicio 2

Define datos como variables de tipo Cancion que representen las siguientes canciones:

* cancionl: la canción de título “The Funeral” con un tamaño de 2000Kb y una duración de 3min 20seg
* cancion?: la canción de titulo “The Extasis” con un tamaño de 1200Kb y una duracién de 2min 40seg,
* cancion3: la canción de título “The Death” con un tamaño de 3500Kb y una duración de 4min 30seg,

(0,5 puntos)

Horario duracioni = new Horario (3, 20);


Horario duracion? = new Horario (2, 40);
Horario duracion3 = new Horario (4, 30);
Cancion cancion1 = new Cancion("The Funeral", 2000, duracionl);
Cancion cancion2 = new Cancion ("The Extasis", 1200, duracion2);
Cancion cancion3 = new Cancion ("The Death", 3500, duracion3);

Ejercicio 3

Define una visualizador para la Cancion de nombre verCancion. Se supone redactado el visualizador del Horario,
con nombre verHorario. (1 punto)

// Visualizador de Cancion:
String verCancion (Cancion c)
u
return "(" + [Link] + ", " + [Link]ño + ", " + verHorario([Link]) + ")";
>

Ejercicio 4
Define un array que contenga las tres canciones que definiste
previamente en el orden dado y otro que esté
vacío. (0,5 punto)

Cancion[] listaReprod3 = fcancioni, cancion2, cancion3);


Cancion[] listaReprod0 = {};
"
Ejercicio 5

Define un visualizador para el array de canciones. (1 punto)

String verListaDR(Cancion[] ldr)


T
String s = "( ";
for (int i=0; i<=[Link]-2; i++)
8 =8 r Idr[i] ,N
if ([Link]!=0)
s=s+ 1dr[[Link]-1];
return s + " ";
}

Ejercicio 6
Suponiendo que un array representa la lista de reproducción con la que se quiere tostar un CD, definir una
función esFactible que reciba la lista de reproduccién y un número entero positivo que representa la capacidad
de un CD en kb y decida si todas las canciones de la lista de reproducción caben en el CD.
Indica qué devolverá la función esFactible para un CD de tamaño 6500kb si recibe como listas de reproducción:

1. El array vacio.

2. Un array formado por las canciones cancionl y cancion3 definidas en el ejercicio 2.

3. El primer array definido en el ejercicio 4.

| (0,5 puntos)

esFactible({}, 6500) = (0 <= 6500) = true

esFactible(listaReprod2, 6500) = (2000+3500 <- 6500) = (5500 <= 6500) = true


esFactible(listaReprod3, 6500) = (2000+1200+3500 <= 6500) = (6700 <= 6500) = false
Ejercicio 7

Define la función esFactible en Java. (2,5 puntos)

boolean esFactible (Cancion[] ldr, int capacidadCD)


{
double tamTotal = 0.0;
for (int i = 0; i<=[Link]-1; i = i+1)
tamTotal = tamTotal + ldr[i].tamaño
return tamTotal <= capacidadCD;
}
Ejercicio 8

Dado el siguiente programa

class Ejercicio
{
Cancion comprimir (Cancion c)
{
[Link] = 2 * [Link]ño;
return c;

i)
Cancion descomprimir (Cancion c)
{
return new Cancion([Link], 2 * [Link], [Link]) ;
}
Cancion c1 = new Cancion(“yo”, 6, new Horario(1, 2));
Cancion c2 = new Cancion(“tu”, 8, new Horario(1, 2);
String p1 = verCancion (comprimir(c1));
String p2 = verCancion(descomprimir
(c2)) ;
String p3 = verCancion(c1);
String p4 = verCancion(c2);
boolean iguales = comprimir(c1) == descomprimir(c1);
}
Indica el resultado que queda en las variables: (a) p1; (b) p2; (c) p3; (d) p4; (e) iguales. (1 punto)

(a) p1 = "(yo, 12.0, (1, 2))"


(b) p2 = "(tu, 16.0, (1, 2))"
(c) p3 = Y(yo, 12.0, (15:2))"
(d) p4 = "(tu, 8.0, (1, 2))"
(e) iguales = false
Ejercicio 9

Redactar una función que reciba dos listas de reproducción ordenadas de menor a
mayor por el tamaño de la
canciones y devuelva una única lista con todas las canciones de las listas recibidas respetando el criterio de
ordenación. (2 puntos)

/* * FUNCION mezclarListas (CancionArr 11, 12) ---> CancionArr


* PRE: "11" y "12" están ordenadas crecientemente por el tamaño
* de las canciones.
* POST: resultado es la coleccion de canciones que contiene
todas
* las de "11" y "12" manteniendo el criterio de ordenación
*/
Cancion[] mezclarListas (Cancion[] 11, Cancion[] 12)
T
Cancion[] resultado = new Cancion[[Link]+12.1length];
int i = 0;
int j =0;
int kK = 0;
while ((i < [Link]) && (j < 12.1ength))
T
if (11[i].tamaño <= 12[j].tamaño)
{
resultado[k] = 11[i];
i i
d
else
T
resultado[k] = 12[j];
Ia
>
k=k+1;
}
if (i == 11.1ength) // se ha vaciado la "11"
for (int indi = j; indi < [Link]; indi++)
T
resultado[k] = 12[indi];
RIS:kK E7
}
else // se ha vaciado la "12"
for (int indi = i; indi < [Link]; indi++)
{
resultado[k] = 11[indi];
K= K+ 13
e
return resultado;
programacion |
Curso 2014/2015

Apellidos, Nombre:
Grupo:

Evall - SOLUCIÓN
28/10/2014

| Ejercicio 1
Una determinada entidad bancaria tiene a cada uno de sus clientes identificados mediante un código que consiste
en una letra mayúscula de la A a la Z.
1) Define un tipo/clase Cuenta que represente una cuenta bancaria, la cual estará formada por el código del
cliente y el saldo de su cuenta. (1 punto)

//Una cuenta bancaria.


class Cuenta {
char codigo;
double saldo;
Cuenta (char cod, double cant) {
codigo = cod;
saldo = cant;
}
y

2) Define dos objetos de tipo Cuenta que representen respectivamente las siguientes cuentas:

“ La de un cliente A con un saldo de 6000 euros.

* La de un cliente G con un saldo negativo de 4000 euros. (1 punto)

Cuenta c = new Cuenta (’A’, 6000);


Cuenta c2 = new Cuenta (?G?, -4000);

También podría gustarte