Java - java ciclos for

 
Vista:

java ciclos for

Publicado por hans (3 intervenciones) el 29/10/2022 17:48:43
Hallar el promedio de edad de los estudiantes de la facultad de ingeniería por programa,
se tienen 6 programas con diferente número de estudiantes cada uno.
Hallar el programa con el mayor y el menor promedio de edad, hallar el promedio por la facultad.
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

java ciclos for

Publicado por Kabuto (1381 intervenciones) el 29/10/2022 22:25:03
Hola Hans.

Comienza haciendo una versión reducida de lo que te piden.
Por ejemplo, empieza por simplemente calcular el promedio de edad de un único "programa".

El "programa" de estudiantes lo puedes representar con un arreglo de tipo int, donde tengas las edades de los estudiantes.

Pues recorre ese arreglo y calcula el promedio. Para calcular el promedio tienes que sumar todas las edades contenidas en el arreglo y luego esa suma la divides por la cantidad de estudiantes, es decir, por la longitud (length) del arreglo.


Cuando lo consigas y tengas claro cómo se hace todo esto, da un siguiente paso, que sería hacer eso mismo, pero para 6 arreglos.

Ya que vas a tener que repetir 6 veces el proceso de calcular un promedio de edad, verás que te conviene escribir el código necesario para hacer ese cálculo en un método/función.
Dicha función debería recibir un arreglo como argumento y retornar el valor del promedio calculado.

Así este proceso solo tienes que escribirlo UNA vez, y poder utilizarlo 6 veces o tantas como necesites.

Esos 6 promedios de edad que deberías conseguir, puedes guardarlos en 6 variables distintas, o mejor aún, en un arreglo de 6 elementos.


Y cuando ya hayas conseguido obtener ese arreglo con los 6 promedios, ya entonces te pones a pensar como extraer de ahí el promedio menor y el mayor.
Y además, el promedio total de esos 6 promedios.


Inténtalo siguiendo estos pasos.
Llega hasta donde puedas, compártelo aquí y si hace falta te ayudamos a corregir o completar.

Un saludo.
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

java ciclos for

Publicado por Hans (3 intervenciones) el 01/11/2022 02:24:30
Lo intente hacer de esta manera pero no puedo seguir.




int[] grupo1 = {18,18,20,19,17,19,20,20,30};
int prom1;
int total1=0;

for (int i = 0; i < grupo1.length; i++) {
total1 += grupo1[i];
}
prom1 = total1 /grupo1.length;
System.out.println("El promedio es: " + prom1);
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

java ciclos for

Publicado por Kabuto (1381 intervenciones) el 01/11/2022 11:20:45
Genial.

Ahora la idea es aplicar ese proceso a 6 "programas" distintos.
Pero claro, escribir lo mismo 6 veces no es óptimo. Lo ideal sería realizar ese proceso en un método al que podamos llamarlo tantas veces como queramos.
En cada llamada, le pasaremos un arreglo y nos retornará el promedio calculado.

Ese método puede ser tan sencillo como esto:
1
2
3
4
5
6
7
8
9
private static int calculaPromedio(int[] programa) {
 
		int suma = 0;
 
		for (int i = 0; i < programa.length; i++)
			suma += programa[i];
 
		return suma / programa.length;
	}


Entonces, ahora podemos calcular el promedio de 6 programas distintos, y usar esos 6 promedios para calcular el promedio de la facultad(por ahora vamos a olvidarnos de lo de buscar el promedio mayor y menor)
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
public class PromediosEdad {
 
	public static void main(String[] args) {
		//Edades de los programas
		int[] programa1 = {18,18,20,19,17,19,22,20,25};
		int[] programa2 = {17,22,20,18,19,26,24,19};
		int[] programa3 = {22,24,16,19,20,19,20,21,23};
		int[] programa4 = {18,19,20,17,17,23,28,18};
		int[] programa5 = {20,18,29,19,27,19,24,25,26};
		int[] programa6 = {17,18,20,25,17,17,28,21};
 
		//Calculamos promedios
		int promedio1 = calculaPromedio(programa1);
		int promedio2 = calculaPromedio(programa2);
		int promedio3 = calculaPromedio(programa3);
		int promedio4 = calculaPromedio(programa4);
		int promedio5 = calculaPromedio(programa5);
		int promedio6 = calculaPromedio(programa6);
 
		//Promedio facultad
		int facultad = (promedio1 + promedio2 + promedio3 +
				promedio4 + promedio5 + promedio6) / 6;
		System.out.println("Edad promedio en la facultad: " + facultad);
 
	}
 
	private static int calculaPromedio(int[] programa) {
 
		int suma = 0;
 
		for (int i = 0; i < programa.length; i++)
			suma += programa[i];
 
		return suma / programa.length;
	}
 
}

Gracias a nuestro método para calcular promedios, el proceso se simplifica bastante.
Y aunque así está bien, aún podría optimizarse más.

Los arreglos con las edades, se podrían agrupar en una matriz donde cada fila sería un "programa".
Y los promedios de edades calculados, a su vez se podrían agrupar en un arreglo, en lugar de tenerlos en 6 variables separadas.

Gracias a eso, con un bucle podemos recorrer las filas de la matriz y al mismo tiempo el arreglo de promedios. Así por cada repetición del bucle podemos calcular y guardar un promedio.

Y luego para calcular el promedio de la facultad, podemos volver a usar nuestro método para calcular promedios

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
public class PromediosEdad {
 
	public static void main(String[] args) {
		//Matriz con edades de los programas
		int[][] programas = {
				{18,18,20,19,17,19,22,20,25},
				{17,22,20,18,19,26,24,19},
				{22,24,16,19,20,19,20,21,23},
				{18,19,20,17,17,23,28,18},
				{20,18,29,19,27,19,24,25,26},
				{17,18,20,25,17,17,28,21}
		};
 
		//Calculamos promedios en un arreglo según la cantidad de filas de la matriz
		int[] promedios = new int[programas.length];
		for (int i = 0; i < programas.length; i++)
			promedios[i] = calculaPromedio(programas[i]); //Pasamos una fila de la matriz
 
		//Promedio facultad
		System.out.println("Edad promedio en la facultad: " + calculaPromedio(promedios));
 
	}
 
	private static int calculaPromedio(int[] programa) {
 
		int suma = 0;
 
		for (int i = 0; i < programa.length; i++)
			suma += programa[i];
 
		return suma / programa.length;
	}
 
}

Hemos obtenido el mismo resultado, pero con menos líneas de código.
Y además, todo ha quedado mejor dispuesto para ahora poder buscar el promedio mayor y menor. Al tener los promedios en un arreglo, será más fácil que no teniéndolos en 6 variables separadas.

Para buscar el mayor y menor podemos declarar dos variables. Ambas tomarán como valor de partida el primer promedio que contiene el arreglo.
Luego recorremos el resto del arreglo y cada promedio lo comparamos con esas dos variables.
Si un valor del arreglo es MAYOR QUE la variable "mayor", pues a esta variable le asignamos ese valor del arreglo, ya que de momento es el mayor encontrado.
Y si es MENOR que la variable "menor", pues lo mismo, le asignamos ese valor.

Haz un intento por tu parte para conseguir obtener el promedio mayor y menor.
De todos modos, abajo te dejo el código completo ya resuelto por si luego quieres comparar tu código con el mío, o te atascas y lo necesitas para completar.

En cualquier caso asegúrate de que entiende todos los pasos que hemos dado y la lógica que hemos aplicado.
Pregunta si tienes dudas , o dime si algo no es correcto, por ejemplo, tal vez no te han explicado como usar matrices y por lo tanto no deberíamos aplicarlas para solucionar esto.

Un saludo.

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
public class PromediosEdad {
 
	public static void main(String[] args) {
		//Matriz con edades de los programas
		int[][] programas = {
				{18,18,20,19,17,19,22,20,25},
				{17,22,20,18,19,26,24,19},
				{22,24,16,19,20,19,20,21,23},
				{18,19,20,17,17,23,28,18},
				{20,18,29,19,27,19,24,25,26},
				{17,18,20,25,17,17,28,21}
		};
 
		//Calculamos promedios en un arreglo según la cantidad de filas de la matriz
		int[] promedios = new int[programas.length];
		for (int i = 0; i < programas.length; i++)
			promedios[i] = calculaPromedio(programas[i]); //Pasamos una fila de la matriz
 
		//Promedio facultad
		System.out.println("Edad promedio en la facultad: " + calculaPromedio(promedios));
 
		//Buscamos promedio mayor y menor.
 
		//Recorreremos los promedios comparando valores entre sí
		//El primer promedio (posicion [0]) sirve de valor inicial para ir comparando
		int mayor = promedios[0], menor = promedios[0];
		//Bucle empieza por el segundo promedio (posicion [1])
		for (int i = 1; i < promedios.length; i++) {
			//Buscamos mayor
			if (promedios[i] > mayor)
				mayor = promedios[i];
			//Buscamos menor
			if (promedios[i] < menor)
				menor = promedios[i];
		}
 
		System.out.println("Mayor edad promedio: " + mayor);
		System.out.println("Menor edad promedio: " + menor);
 
	}
 
	private static int calculaPromedio(int[] programa) {
 
		int suma = 0;
 
		for (int i = 0; i < programa.length; i++)
			suma += programa[i];
 
		return suma / programa.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