Java - Mayor número y porcentaje

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

Mayor número y porcentaje

Publicado por Caleb (10 intervenciones) el 19/02/2020 15:28:07
Buenos días grupo, disculpen pero necesito una ayudita con esto... pues el vector que hice ya es aleatorio solo me falta indicar cual es el mayor y el porcentaje que esta por encima del promedio, lo he intentado pero no lo he conseguido, muchas gracias por su atención.
Esto es lo que me ha quedado bien, ahora me faltaría lo del mayor numero y el porcentaje:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Scanner in = new Scanner(System.in);
int n;
int mayor = 0;
double porcentajeEncima;
System.out.println("Porfavor indique el valor de N");
n = in.nextInt();
int [] numeros = new int [n];
for(int i = 0; i < numeros.length; i++){
    numeros[i] = (int)(Math.random()*100);
}
if (n!=n){
    System.out.println("El número mayor es: "+ mayor);
}
System.out.println("  ");
for(int j = 0; j < numeros.length; j++){
  System.out.println(numeros[j]);
 
}
 
}
}

Nuevamente, gracias por su colaboración chicos!
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Mayor número y porcentaje

Publicado por Rodrigo (623 intervenciones) el 19/02/2020 15:39:54
Aqui algunos recortes, de ayuda.

Para saber el mayor:
Asignale a la variable mayor que definiste el primer elemento del vector.
Luego recorre el vector y comparas todos los elementos contra el mayor.
Si el elemento visitado resulta ser mayor que el mayor actual lo reemplazas, pues ese es el nuevo mayor, sino lo mantienes
algo asi:

1
2
3
4
5
6
mayor = numeros[0]
for( int i = 0; i < numeros.length(); i++ ) {
   if( numeros[i] > mayor ) {
      mayor = numeros[i];
   }
}

En ese mismo ciclo puedes aprovechar y sumar los valores de todos, para poder calcular el promedio despues, algo asi:

1
2
3
4
5
6
7
8
mayor = numeros[0]
suma = 0;
for( int i = 0; i < numeros.length(); i++ ) {
   if( numeros[i] > mayor ) {
      mayor = numeros[i];
   }
   suma = suma + numeros[i];
}

Haz que suma sea float, para no tener que hacer un cast al calcular el promedio.

Luego recorres el arreglo una segunda vez, para saber cuales son mayores que el promedio, usando una logica similar a lo ya visto, excepto que en vez de reemplazar, cuentas.

1
2
3
4
5
6
int arribaDelPromedio = 0;
for( int i = 0; i < numeros.length(); i++ ) {
   if( numeros[i] > promedio ) {
      arribaDelPromedio++;
   }
}

El porcentaje de mayores que el promedio sera lo que resulte de: arribaDelPromedio * 100.0 / numeros.length()
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
sin imagen de perfil
Val: 14
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

Mayor número y porcentaje

Publicado por Caleb (10 intervenciones) el 19/02/2020 16:01:35
Ufff Muchas gracias por la explicación!! ;)
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
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

[SOLUCIÓN] Mayor número y porcentaje

Publicado por Billy Joel (875 intervenciones) el 19/02/2020 17:30:25
Vi el enunciado y lo resuelvo 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
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
106
107
import java.util.Random;
import java.util.Scanner;
 
/**
 *
 * @author billy.johnson
 */
public class Aleatorios {
 
    /**
     * Devuelve un número aleatorio entre los límites
     *
     * @param min
     * @param max
     * @return
     */
    public static Integer getRandomNumber(int min, int max) {
        return new Random().nextInt(max - min + 1) + min;
    }
 
    /**
     * Genera un vector de enteros con valores aleatorios que van desde un valor
     * minimo a uno maximo
     *
     * @param elementos cantidad de elementos
     * @param min valor aleatorio minimo
     * @param max valor aleatorio maximo
     * @return
     */
    public static int[] getVectorRandom(int elementos, int min, int max) {
        int[] e = new int[elementos];
        for (int i = 0; i < e.length; i++) {
            e[i] = getRandomNumber(min, max);
        }
        return e;
    }
 
    /**
     * Devuelve el promedio del vector
     * @param vector
     * @return
     */
    public static int getPromedioVector(int [] vector){
        int sum = 0;
        for (int i = 0; i < vector.length; i++) {
            sum += vector[i];
        }
        return sum / vector.length;
    }
 
    /**
     * Devuelve el indice del valor maximo que se encuentra dentro del vector
     * @param vector
     * @return
     */
    public static int getMaxValueIndex(int [] vector){
        int index = 0;
        int max = vector[index];
 
        for (int i = 1; i < vector.length; i++) {
            if(max < vector[i]){
                index = i;
                max = vector[i];
            }
        }
        return index;
    }
 
    /**
     * Calcula el porcentaje que tiene un valor con respecto
     * @param promedio
     * @param superior
     * @return
     */
    public static double calcularPorcentajeSuperiorPromedio(int promedio, int superior){
        double diferencia = superior - promedio;
        return diferencia / promedio * 100.00;
    }
 
    /**
     * Muestra el contenido de un vector en una línea
     * @param vector
     */
    public static void showVector(int [] vector){
        for (int i = 0; i < vector.length; i++) {
            System.out.print(vector[i] + (i + 1 < vector.length ? ", " : "\n"));
        }
    }
 
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca el tamaño del vector: ");
        int n = Integer.parseInt(sc.nextLine());
        int [] vector = getVectorRandom(n, 1, 99);
 
        int mayor = vector[getMaxValueIndex(vector)];
        int promedio = getPromedioVector(vector);
        double porcentaje = calcularPorcentajeSuperiorPromedio(promedio, mayor);
        System.out.print("Los elementos del vector son: ");
        showVector(vector);
        System.out.println("El vector tiene " + vector.length + " elementos"
                + "\nEl elemento con mayor valor es: " + mayor
                + "\nEl promedio de los elementos es: " + promedio
                + "\nEl porcentaje es: " + String.format("%.2f", porcentaje)
        );
    }
}

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
1
Comentar