Java - problema de poblacion de hormigas

 
Vista:

problema de poblacion de hormigas

Publicado por slaveknight (4 intervenciones) el 15/03/2020 04:07:05
Hola

Estoy teniendo problemas con este ejercicio

En la isla del Edén vive una gran cantidad de hormigas que se reproducen a una tasa del 40% mensual; en la isla existe además un oso hormiguero que se come 7000 hormigas al final de cada mes (o todas las hormigas que haya si la población de hormigas en ese momento es inferior a 7000). Cuando la población de hormigas de la isla sobrepasa el máximo de 28000, comienza a haber problemas de alimentación lo que hace que se reduzca la tasa de crecimiento al 31% mensual. El muestreo de la población se hace mensualmente, al final de cada mes

Este es mi avanze de momento

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int horms = 0;
int horms2 = 0;
int horms3 = 0;
final double porcen = 0.40;
 
for (int i = 0; i < 12; i++) {
    Scanner reader= new Scanner(System.in);
    System.out.println(meses == 12);
    System.out.println("Please enter the amount of Ants in the Island");
    horms = reader.nextInt();
 
    if( horms >=27999 ) {
      horms++;
 
        }else if (horms2 <27999 && horms2 <=7000) {
        horms2++;
 
        }else if (horms3 < 7000 ) {
        horms3++;
     System.out.println();
      int user = reader.nextInt();
                      System.out.println("la cantidad de hormigas es" + (horms * porcen - 7000 && horms2 * porcen - 7000 && horms3 * porcen - 7000));

Esta ultima linea me esta dando un error

ERROR //The operator && is undefined for the argument type(s) double, double//

Alguna idea ?
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

problema de poblacion de hormigas

Publicado por Rodrigo (623 intervenciones) el 15/03/2020 04:27:39
&& no tiene sentido ahi.
Que intentas hacer?

Si la idea es poner datos en la salida, tal vez te sirve cambiar && por +, algo como (calculo1) + " " + (calculo2) + " " + (calculo3)
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

problema de poblacion de hormigas

Publicado por slaveknight (4 intervenciones) el 15/03/2020 04:32:52
Basicamente lo que trato de hacer es en vez de hacer varios sysos hacer solo uno
Ya que el calculo pide imprimir 12 veces el mensaje dependiendo a la cantidad de hormigas en un mes

mi idea era hacerlo de esa manera

si no se cumple la primera funcion entonces pasar a la segunda o la tercera
dependiendo de la cantidad de hormigas
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

problema de poblacion de hormigas

Publicado por Rodrigo (623 intervenciones) el 15/03/2020 04:54:58
Preguntar cada mes por la poblacion no parece ser lo que hay que hacer.
Creo que hay que preguntar solo 1 vez, antes del ciclo por la poblacion inicial y hacer en cada vuelta, el recalculo de la poblacion, aumentando de acuerdo al porcentaje y reduciendo lo que el oso come. El porcentaje puede cambiar de acuerdo a la polbacion.

No es necesario tener tantas variables.

Esa es mi opinion desinformada.
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

problema de poblacion de hormigas

Publicado por slaveknight (4 intervenciones) el 15/03/2020 17:14:01
Gracias por tu respuesta

De hecho si tiene bastante sentido lo que dices

Solo que no veo la manera de como hacerlo

Tienes alguna idea de como ejecutarlo ?
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

problema de poblacion de hormigas

Publicado por Kabuto (1381 intervenciones) el 15/03/2020 13:53:09
A ver, yo según el enunciado, interpreto el código que pongo más abajo.
Sin embargo, las condiciones del enunciado son demasiado sencillas. Quizás sería más interesante si la cantidad de hormigas que come el oso y/o los porcentajes de crecimiento fueran valores al azar dentro de unos rangos.
O que variasen según el mes actual...

Con las condiciones de este enunciado, si probamos el programa podemos ver que si la población de hormigas comienza con un valor inferior a 17500, inevitablemente acabarán muriendo todas.

Si la población se inicia con un valor superior a 17500, inevitablemente la población crecerá para siempre.

Y si comienza exactamente con población en 17500, se mantiene estable sin aumentar o decrecer para siempre...

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
public class Hormigas {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
		System.out.print("Indique población actual de hormigas: ");
		int hormigas = teclado.nextInt();
 
		int terminar = 1; //El usuario podrá elegir terminar el programa
		int mes = 0;
 
		while (hormigas > 0 && terminar != 0) {
 
			//Comienza un nuevo mes
			if (mes < 12)
				mes++;
			else
				mes = 1;
 
			//Decidimos crecimiento mensual según la población
			if (hormigas > 28000)
				hormigas *= 1.31;
			else
				hormigas *= 1.4;
 
			//EL oso se zampa sus hormigas mensuales
			if (hormigas < 7000)
				hormigas = 0;
			else
				hormigas -= 7000;
 
			//Reporte a fin de mes
			System.out.println("\n\t------------\nMes actual: " + mes);
			System.out.println("Población de homigas: " + hormigas);
 
			if (hormigas == 0)
				System.out.println("La isla ha quedado despoblada de hormigas");
			else {
				System.out.print("¿Desea continuar?(0=SALIR/1=CONTINUAR): ");
				terminar = teclado.nextInt();
			}
 
		}
 
		System.out.println("\nFIN DE PROGRAMA");
		teclado.close();
	}
 
}
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

problema de poblacion de hormigas

Publicado por slaveknight (4 intervenciones) el 15/03/2020 17:21:24
Esto me parece genial

de hecho es una forma mas sencilla de procesarlo

como llegaste a esa conclucion ?
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

problema de poblacion de hormigas

Publicado por Kabuto (1381 intervenciones) el 15/03/2020 22:31:27
Bueno, cuestión de experiencia.

Al principio, cuando estamos aprendiendo a programar, tenemos tendencia a desarrollar soluciones mucho más complejas de lo necesario.
Yo también pasé por esa fase, recuerdo perfectamente llegar a clase orgulloso de haber encontrado la solución y luego me quedaba sin palabras cuando el profesor mostraba su solución, resultando ser super sencilla y escueta, cuando yo había escrito un código complejo y enorme.

Con el tiempo, cuando vamos entendiendo y familiarizándonos con las mecánicas de programación, vamos consiguiendo desarrollar soluciones cada vez más sencillas y eficientes.

A veces es útil hacerse un planning, ya sea mental o escrito, identificando lo que tiene que ocurrir durante la ejecución del programa.

En este caso, lo que ha de ocurrir:

1) La población de hormigas ha de crecer. El porcentaje de crecimiento depende de su población actual.

2) El oso ha de comer 7000 hormigas.

3) Mostramos reporte de la población actual.



Todo esto se repite cada mes, así que ha de ir en un bucle. ¿Cuándo finaliza el bucle?
- Pues cuando ya no queden hormigas.
Pero, ¿y si las hormigas no se agotan nunca?
- Entonces el usuario ha de poder parar el programa.
Así pues, el bucle tendrá dos condiciones :
- hormigas > 0 y opción_usuario != terminar

Como hablamos de meses, pues además le podemos añadir un contador que vaya del 1 al 12.


Y con estas ideas ya un poco más claras, entonces nos podemos poner a escribir código.
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

problema de poblacion de hormigas

Publicado por Billy Joel (875 intervenciones) el 16/03/2020 22:24:56
Yo 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
import java.util.Scanner;
 
/**
 *
 * @author Billy Joel
 */
public class Hormigas {
 
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca la cantidad inicial de hormigas: ");
        double hormigas = sc.nextDouble();
        int oso = 7000;
        int max = 28000;
        int mes = 0;
        while(hormigas > 0){
            mes++;
            hormigas = hormigas >= max ? hormigas * 1.4 : hormigas * 1.31;
            hormigas = hormigas - oso <= 0 ? 0 : hormigas - oso;
            System.out.println("hormigas en el mes " + mes + ": " + hormigas);
        }
    }
}

Explicando un poco...
Si la cantidad de hormigas es mayo o igual al límite máximo entonces la taza de crecimiento será de 40% de otro modo 31%.

Si la resta de la cantidad de hormigas menos lo que consume el oso hormiguero da negativo entonces la cantidad de hormigas será 0 de otro modo el resultado de la resta de la cantidad de hormigas menos lo que consume el oso.

PD: haciendo los calculos la cantidad minima para que la colonia sea sustentable en el tiempo es 25581. Menos de esa cantidad inicial, por ejemplo 22580 se extingue en 39 meses.

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

problema de poblacion de hormigas

Publicado por Ale (1 intervención) el 20/04/2021 05:25:16
Hola, sabes como resolverlo en Python?
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