Skip to content

Commit 8f24803

Browse files
committed
Added Actividad21_Aplicacion - Unit 5
1 parent c1e2bef commit 8f24803

File tree

1 file changed

+167
-0
lines changed

1 file changed

+167
-0
lines changed
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
package unit05.Actividad21_Aplicacion;
2+
3+
import java.util.Arrays;
4+
5+
import static unit05.Actividad09.Actividad9.getInt;
6+
7+
/*
8+
1 2 3 4 5
9+
1 2 3 5 4
10+
1 2 5 4
11+
2 5 4 1
12+
Diseña una aplicación para gestionar la llegada a meta de los participantes de una carrera.
13+
Cada uno de ellos dispone de un dorsal (un número entero) que los identifica.
14+
En la aplicación se introduce el número de dorsal de cada corredor cuando este llega a la meta.
15+
Para indicar que la carrera ha finalizado (han llegado todos los corredores a la meta), se introduce como dorsal el número -1.
16+
17+
A continuación, la aplicación solicita información extra de los corredores.
18+
En primer lugar, se introducen los dorsales de todos los corredores menores de edad; para premiarlos por su esfuerzo se les avanza un puesto en el ranking general de la carrera, es decir, es como si hubieran adelantado al corredor que llevaban delante.
19+
En segundo lugar, se introducen los dorsales de los corredores que han dado positivo en el test antidopaje, lo que provoca su expulsión inmediata.
20+
21+
Para finalizar, se introducen los dorsales de los corredores que no han pagado su inscripción en la carrera, lo que provoca que se releguen a los últimos puestos del ranking general.
22+
23+
La aplicación debe mostrar los dorsales de los corredores que han conseguido las medallas de oro, plata y bronce.
24+
*/
25+
public class Actividad21 {
26+
public static void main(String[] args) {
27+
int[] dorsales = new int[0];
28+
int dorsal;
29+
30+
// Leer los dorsales de los corredores
31+
System.out.println("Introduce los dorsales de los corredores: ");
32+
System.out.println("Para finalizar introduce -1");
33+
do {
34+
dorsal = getInt("Introduce el dorsal del corredor: ");
35+
if (dorsal != -1) {
36+
dorsales = insertar(dorsales, dorsal);
37+
}
38+
} while (dorsal != -1);
39+
40+
// Pedir los dorsales de los menores de edad
41+
System.out.println("Introduce los dorsales de los menores de edad: ");
42+
System.out.println("Para finalizar introduce -1");
43+
do {
44+
dorsal = getInt("Introduce el dorsal del corredor: ");
45+
if (dorsal != -1) { // Si el dorsal no es -1
46+
if (contains(dorsales, dorsal)) { // Comprobar si el dorsal existe
47+
moverUnPuesto(dorsales, dorsal); // Mover el dorsal una posición
48+
} else { // Si el dorsal no existe
49+
System.out.println("El dorsal no existe");
50+
}
51+
}
52+
} while (dorsal != -1);
53+
54+
// Pedir los dorsales de los corredores que han dado positivo en el test antidopaje
55+
System.out.println("Introduce los dorsales de los corredores que han dado positivo en el test antidopaje: ");
56+
System.out.println("Para finalizar introduce -1");
57+
do {
58+
dorsal = getInt("Introduce el dorsal del corredor: ");
59+
if (dorsal != -1) { // Si el dorsal no es -1
60+
if (contains(dorsales, dorsal)) { // Comprobar si el dorsal existe
61+
dorsales = eliminar(dorsales, dorsal); // Eliminar el dorsal
62+
} else { // Si el dorsal no existe
63+
System.out.println("El dorsal no existe");
64+
}
65+
}
66+
} while (dorsal != -1);
67+
68+
// Pedir los dorsales de los corredores que no han pagado su inscripción en la carrera
69+
System.out.println("Introduce los dorsales de los corredores que no han pagado su inscripción en la carrera: ");
70+
System.out.println("Para finalizar introduce -1");
71+
do {
72+
dorsal = getInt("Introduce el dorsal del corredor: ");
73+
if (dorsal != -1) { // Si el dorsal no es -1
74+
if (contains(dorsales, dorsal)) { // Comprobar si el dorsal existe
75+
dorsales = moverUltimo(dorsales, dorsal); // Mover el dorsal al último puesto
76+
} else { // Si el dorsal no existe
77+
System.out.println("El dorsal no existe");
78+
}
79+
}
80+
} while (dorsal != -1);
81+
82+
// Mostrar los dorsales de los corredores que han conseguido las medallas de oro, plata y bronce
83+
if (dorsales.length >= 3) {
84+
mostrarMedallas(dorsales);
85+
} else {
86+
System.out.println("No hay suficientes dorsales para mostrar las medallas");
87+
}
88+
89+
90+
}
91+
92+
private static void mostrarMedallas(int[] dorsales) {
93+
System.out.println("Medalla de oro: " + dorsales[0]);
94+
System.out.println("Medalla de plata: " + dorsales[1]);
95+
System.out.println("Medalla de bronce: " + dorsales[2]);
96+
}
97+
98+
private static int[] moverUltimo(int[] dorsales, int dorsal) {
99+
int posicion = getIndice(dorsales, dorsal);
100+
101+
// Eliminar el dorsal
102+
for (int i = posicion; i < dorsales.length - 1; i++) {
103+
dorsales[i] = dorsales[i + 1];
104+
}
105+
dorsales = Arrays.copyOf(dorsales, dorsales.length - 1);
106+
107+
// Insertar el dorsal al final
108+
dorsales = insertar(dorsales, dorsal);
109+
110+
return dorsales;
111+
}
112+
113+
private static int[] eliminar(int[] dorsales, int dorsal) {
114+
int posicion = getIndice(dorsales, dorsal);
115+
116+
// Eliminar el dorsal
117+
for (int i = posicion; i < dorsales.length - 1; i++) {
118+
dorsales[i] = dorsales[i + 1];
119+
}
120+
dorsales = Arrays.copyOf(dorsales, dorsales.length - 1);
121+
122+
return dorsales;
123+
}
124+
125+
private static void moverUnPuesto(int[] dorsales, int dorsal) {
126+
int posicion = getIndice(dorsales, dorsal);
127+
128+
// Mover el dorsal una posición
129+
if (posicion != 0) {
130+
int aux = dorsales[posicion]; // Guardamos el dorsal elegido
131+
dorsales[posicion] = dorsales[posicion - 1]; // Movemos el dorsal anterior a la posición elegida
132+
dorsales[posicion - 1] = aux; // Movemos el dorsal elegido a la posición anterior
133+
}
134+
}
135+
136+
private static int[] insertar(int[] dorsales, int dorsal) {
137+
if (!contains(dorsales, dorsal)) {
138+
dorsales = Arrays.copyOf(dorsales, dorsales.length + 1);
139+
dorsales[dorsales.length - 1] = dorsal;
140+
} else {
141+
System.out.println("El dorsal ya existe");
142+
}
143+
144+
return dorsales;
145+
}
146+
147+
148+
public static boolean contains (int[] tabla, int valor) {
149+
boolean encontrado = false;
150+
for (int i = 0; i < tabla.length && !encontrado; i++) {
151+
if (tabla[i] == valor) {
152+
encontrado = true;
153+
}
154+
}
155+
return encontrado;
156+
}
157+
158+
public static int getIndice (int[] tabla, int valor) {
159+
int posicion = -1;
160+
for (int i = 0; i < tabla.length && posicion == -1; i++) {
161+
if (tabla[i] == valor) {
162+
posicion = i;
163+
}
164+
}
165+
return posicion;
166+
}
167+
}

0 commit comments

Comments
 (0)