Java - Ayuda Ejercicio Ciclo For

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda Ejercicio Ciclo For

Publicado por aydiomio (2 intervenciones) el 10/12/2019 16:11:33
Buenas gente necesito una ayuda con un problema urgente!!!

Este es el problema en cuestión:

Un entrenador le ha propuesto a un atleta recorrer una ruta de cinco kilómetros durante 10 días, para determinar si es apto para la prueba de 5 Kilómetros o debe buscar otra especialidad. Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones:
• Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos.
• Que al menos en una de las pruebas realice un tiempo menor a 14 minutos.
• Que su promedio de tiempos sea menor o igual a 15 minutos.

* LO HICE HASTA 2 PARA NO TENER QUE INGRESAR LOS 10 VALORES CADA VEZ QUE REPETÍA.

*El problema es que cuando inserto varios valores solo me cuenta el último valor a pesar de que los suma todos y saca el promedio. Por ejemplo si ingreso 18 y 5 el programa debería decir que no es apto para la competencia porque en una de las pruebas paso el tiempo mayor a 16 minutos, sin embargo, como solo me cuenta el último número el programa me dice que si es apto cuando no es así.

Ayuda pls



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
package ayuda.pls;
import java.util.Scanner;
 
public class AyudaPls {
 
 
    public static void main(String[] args) {
      Scanner entrada = new Scanner(System.in);
 
 
 
      int tiempo = 0;
      float prom = 0,acum = 0;
 
     System.out.println("DIGITE EL TIEMPO DE RECORRIDO DURANTE LOS 10 DÍAS");
     System.out.println(" TIEMPO:");
 
      for (int i=1;i<3;i++){
      System.out.println("DIA N*" + i + ":");
      tiempo = entrada.nextInt();
      acum=acum+tiempo;
 
      if (tiempo > 16) {
      }else if (tiempo < 14 && tiempo < 16) {
          }
 
      prom=(acum/2);
 
          }    //FINALIZA FOR
 
     if(tiempo>16){
          System.out.println("NO PUEDE REALIZAR EL TEST");
     }
      else {
 
        boolean name = tiempo < 14 && tiempo < 16 && tiempo<=prom;
        System.out.println("ES APTO");
        System.out.println("Promedio de tiempo:" +prom);
     }
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 186
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda Ejercicio Ciclo For

Publicado por Juan (70 intervenciones) el 10/12/2019 17:18:12
Hola aydiomio, en el ejemplo que das si debería decir que es apto. porque el problema dice que SOLO SE DEBE CUMPLIR UNA CONDICIÓN. y en tu ejemplo un dia hizo 5 minutos, por lo tanto la segunda condición se cumple y es apto. No se tienen que cumplir las tres, si no una sola. te dejo un pequeño programa a ver si te ayuda


Añadi una variable dia, que uso para recorrer el for, y asi ya tengo la cantidad de días para luego sacar el promedio.
Tambien añadi 2 variables booleanas, para verificar las 2 primeras condiciones, la primera la pongo en true, y si alguno de los tiempos supera 16 minutos pasa a false, debido a que ya no se cumple esa condición, porque deben ser TODOS mayores a 16.

La otra la inicio en false, y si encuentra un solo tiempo que sea inferior a 14 ya se pone a true, porque ya esa condición se cumple. ya que solo requiere que 1 esté por debajo de 14. al final del ciclo verificó si se cumplieron esas 2 condiciones e imprimo de ser asi, luego verifico la tercera condición sacando el promedio.

y para finalizar con la variable apto, controlo que al menos una de las 3 se cumpla, de no ser así imprimo que no es apto.

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
public static void main(String args[]) {
    Scanner entrada = new Scanner(System.in);
 
    int dia=0;
    int tiempo = 0;
    float prom = 0;
    boolean condicion1=true;
    boolean condicion2=false;
    boolean apto=false;
 
 
    System.out.println("DIGITE EL TIEMPO DE RECORRIDO DURANTE LOS 10 DÍAS");
    System.out.println(" TIEMPO:");
 
    for (dia=1;dia<3;dia++){
        System.out.println("DIA Nº" + dia + ":");
        tiempo=entrada.nextInt();
        prom=prom+tiempo;
 
        if (tiempo<14){
            condicion2=true;
        }
        if (tiempo>16){
            condicion1=false;
        }
    }
 
    if (condicion1){
        apto=true;
        System.out.println("Ha cumplido la primera condicion (Ningun tiempo mayor a 16)");
    }
    if (condicion2){
        apto=true;
        System.out.println("Ha cumplido la segunda condicion (tiempo menor a 14 en un dia)");
    }
    if ((prom/(dia-1))<=15){
        apto=true;
        System.out.println("Ha cumplido la tercera condicion (promedio menor o igual a 15)");
    }
    if (!apto){
        System.out.println("No has cumplido ninguna condicion, no eres apto");
    }
}

te deje el for en 2 valores, para llenar solo 2 dias, luego tendrás que ponerlo a 10

y si quieres finalizar el recorrido cuando se cumpla la segunda condicion, ya que si esta se cumple es apto pase lo que pase y no es necesario continuar rellenando los dias. puedes poner una dependencia de esta condicion en el for, y se salga al cumplirse. de esta manera:

1
for (dia=1;dia<10&&(!condicion2);dia++)

y al tener un tiempo menor a 14 en cualquier dia, ya es apto y finaliza el conteo de dias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda Ejercicio Ciclo For

Publicado por ranjers (2 intervenciones) el 10/12/2019 18:13:19
Hola, me acabo de crear la cuenta para darte positivo xD.

Efectivamente es como dices, no habia leido bien que no era necesario que cumpliera las tres condiciones a la vez.

Muchas gracias por tu codigo, la verdad es que me has salvado de una bien grande porque tengo otros ejercicios parecidos a este y no había podido avanzar. Ahora sí que podré terminar.

De nuevos gracias y saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar