Java - ayuda!!! ejercicio en java

 
Vista:

ayuda!!! ejercicio en java

Publicado por exequiel (1 intervención) el 17/11/2020 03:20:22
Se necesita desarrollar un programa que permita cargar los tiempos obtenidos por los 20 participantes de una competencia de ciclismo.
Con los tiempos registrados en minutos el programa debe:

Determinar el tiempo promedio de la carrera
Determinar la cantidad de abandonos (se considera abandono cuando el tiempo ingresado es 0)
Determinar y mostrar el tiempo del ganador
Mostrar el listado completo de tiempos ordenado en forma ascendente (Tener presente que los abandonos no debería figurar en el listado).

¿Como hago este codigo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda!!! ejercicio en java

Publicado por Billy Joel (876 intervenciones) el 17/11/2020 15:47:32
Lo primero sería preguntar la cantidad de participantes.
El primer dilema será como identificar a los participantes. Lo ideal sería con Bean (clase con atributos como nombre, número, tiempo), o con una matriz en donde registras el número (dorsal) y el tiempo.

Este post te puede servir de ejemplo para sacar el promedio.

En el post la compañera Lisa posteó una solución para determinar el ganador.

En este otro post también dejo un método para ordenamiento ascendente por burbuja (así se le llama al algoritmo de ordenamiento ).

Vas a necesitar un contador para determinar cuantos participantes no abandonaron y con ese contador vas a crear tu matriz final, esa a la que vas a ordenar.

Bueno solo echale un poco de ganas, pon el código que tienes y te puedo guiar con gusto.

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

ayuda!!! ejercicio en java

Publicado por exequiel (1 intervención) el 17/11/2020 17:47:08
Esta es la forma en que lo arme:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import java.util.*;
public class Carrera
{
    public static void main (String [] args)
    {
        System.out.println ("BIENVENIDO AL PROGRAMA!\n");
        System.out.print("Competencia de ciclismo\n");
 
        // Declaración de variables
        Scanner Tiempo = new Scanner(System.in);
        double Media = 0;
        int Descalificado = 0;
        float Carrera[]=new float [20];
        float MenorTiempo = 0;
        int i = 0;
        int Cont = 0;
        int Participantes=0;
 
        // Ciclo que pide el ingreso de los tiempos de carrera de forma ordenada.
        for (i=0; i<20; i++)
        {
            System.out.print("\n" + "Por favor ingrese el tiempo de carrera del" + " " + (Cont = Cont + 1) + "º ciclista:\n");
            Carrera[i] = Tiempo.nextFloat();
        }
 
        //Ciclo que saca la cantidad de abandonos en la carrera. (Introduciendo 0)IF
        for (i = 0; i < 20; i ++)
        {
            if(Carrera[i] > 0)
            {
                Media = Media + Carrera[i];
            }
            else
            {
                Descalificado = Descalificado + 1;
            }
        }
 
        //Se imprime la cantidad de abandonos
        System.out.println("\nLa cantidad de abandonos fue de " + Descalificado + " participantes");
 
 
        ///Se descuentan los ciclistas eliminados del total de competidores que finalizaron la carrera.
        Participantes = Carrera.length - Descalificado;
 
 
        ///Saca la media de la carrera solamente utilizando a los participantes que finalizaron la misma.
        System.out.println("\nEl promedio de la carrera fue de: " + (Media / Participantes) + " min.");
 
        ///Ciclo que separa a los abandonos de los mejores tiempos (para que 0 no sea el mejor tiempo).
        i = 0;
        while(MenorTiempo == 0)
        {
            MenorTiempo = Carrera[i];
            i ++;
        }
 
        //Se saca el mejor tiempo en carrera.
        for(i = 0; i < Carrera.length - 1; i ++){
            if (Carrera[i] <= MenorTiempo && Carrera[i] != 0){
                MenorTiempo = Carrera[i];
            }
        }
 
        //Se imprime el mejor tiempo en carrera.
        System.out.println("\nEl mejor tiempo en carrera fue de " + MenorTiempo + " min.");
 
        ///Se crea un auxiliar para guardar el valor de el primer indice.
        float Aux = 0;
 
        //Se crea un segundo indice que va a server para comparar el Indice en cada uno de los ciclos con otro numero.
        int iDos = 1;
 
        System.out.println("\nTabla de posiciones: \n");
 
        //Se crea el ciclo que va a ir comparando paso a paso los valores de los tiempos.
        for(i = 0; i < Carrera.length - 1; i ++)
        {
            for(iDos = i + 1; iDos < Carrera.length; iDos ++)
            {
                if(Carrera[iDos] <= Carrera[i])
                {
                    Aux = Carrera[i];
                    Carrera[i] = Carrera[iDos];
                    Carrera[iDos] = Aux;
                }
            }
        }
 
        ///Se imprime la tabla final de posiciones.
        ///Con la variable final vamos colocando el orden de competidores, por ejemplo: 1, 2, 3, 4.
        int Final = 1;
        for(i = 0; i <= Carrera.length - 1; i ++)
        {
            if(Carrera[i] != 0)
            {
                System.out.println(Final + "º lugar | " + Carrera[i]);
                Final = Final + 1;
            }
        }
 
 
 
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda!!! ejercicio en java

Publicado por Billy Joel (876 intervenciones) el 17/11/2020 20:17:26
Yo lo resolví así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.util.Scanner;
 
public class CarreraClicismo {
 
    public static void main(String[] args) {
        int CANTIDAD_PARTICIPANTES = 20;
        Scanner sc = new Scanner(System.in);
        double[] tiempos = new double[CANTIDAD_PARTICIPANTES];
        int abandonaron = 0;
        System.out.println("Introduzca los tiempos de los participantes");
        for (int j = 0; j < tiempos.length; j++) {
            System.out.print("Participante #" + (j + 1) + ": ");
            tiempos[j] = sc.nextDouble();
            if (tiempos[j] == 0) {
                abandonaron++;
            }
        }
 
        //Vamos a crear un arreglo con los competidores que no abandonaron
        int c = 0;
        double tiempoTotal = 0;
        double[] competidores = new double[CANTIDAD_PARTICIPANTES - abandonaron];
        for (int j = 0; j < tiempos.length; j++) {
            if (tiempos[j] > 0) {
                competidores[c] = tiempos[j];
                tiempoTotal += competidores[c];
                c++;
            }
        }
        double promedio = tiempoTotal / competidores.length;
 
        //Ahora ordenamos los tiempos
        ordenamientoBurbuja(competidores);
 
        System.out.println("El tiempo promedio de la carrera: " + promedio
                + "\nAbandonos: " + abandonaron
                + "\nEl tiempo ganador: " + competidores[0]
                + "\nListado completo de tiempos: "
        );
 
        for (int j = 0; j < competidores.length; j++) {
            System.out.println((j + 1) + ": " + competidores[j]);
        }
    }
 
    public static void ordenamientoBurbuja(double[] array) {
        for (int i = array.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (j + 1 <= i && array[j] > array[j + 1]) {
                    double aux = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = aux;
                }
            }
        }
    }
}

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar