Created
November 9, 2022 18:22
-
-
Save gonzaleztroyano/804b2349dff4555d9649efbf63a23df4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* Alumno: Pablo Gonzalez Troyano | |
* Grado en Ciencia, Gestion e Ingenieria de Servicios (Semipresencial) | |
* | |
* ENUNCIADO DEL EJERCICIO | |
* | |
* Un Agricultor se dedica a la cria de Conejos. Compra 240 Conejos aptos para reproducirse. | |
* Por la experiencia de mas de 20 annos que lleva en el negocio, sabe que cada mes nacen | |
* entre 2 y 45 conejos jovenes que no estan aptos para reproducirse, pero lo seran | |
* cuando cumplan el mes aproximadamente. | |
* | |
* Ademas, mueren entre 0 y 5 de los conejos adultos y solo entre 0 y 2 de los conejos jovenes. | |
* Cada mes el agricultor vende entre el 0 y el 10% de la poblacion adulta, | |
* y cero de la poblacion joven, ya que el gobierno no le permite vender a los conejos jovenes. | |
* | |
* | |
* Run online on codeboard: https://codeboard.io/projects/357480 | |
* | |
* VCS: https://gist.github.com/gonzaleztroyano/804b2349dff4555d9649efbf63a23df4 | |
* | |
*/ | |
import java.util.Scanner; | |
public class Main { | |
public static void muestra_resumen(int pi, int pi_jove, int npm_min, int npm_max, int mpm_jove_min, int mpm_jove_max, int mpm_adul_min, int mpm_adul_max, double vpm_min, double vpm_max, int mas, boolean flag_debug){ | |
System.out.println("\n=====\nSe realizaran los calculos con las siguientes variables:"); | |
System.out.println(" Poblacion Inicial adultos: " + pi ); | |
System.out.println(" Poblacion Inicial jovenes: " + pi_jove ); | |
System.out.println(" Nacimientos por mes: " + npm_min + " - " + npm_max); | |
System.out.println(" Muertes por mes (Jovenes): " + mpm_jove_min + " - " + mpm_jove_min); | |
System.out.println(" Muertes por mes (Adultos): " + mpm_adul_min + " - " + mpm_adul_min); | |
System.out.println(" Ventas por mes: " + vpm_min*100 + "% - " + vpm_max*100 + "%"); | |
System.out.println(" Meses a simular: " + mas ); | |
System.out.println(" Modo Debug: " + flag_debug + "\n =====\n"); | |
} | |
public static int calcula(int pi, int pi_jove, int npm_min, int npm_max, int mpm_jove_min, int mpm_jove_max, int mpm_adul_min, int mpm_adul_max, double vpm_min, double vpm_max, int mas, boolean flag_debug){ | |
//System.out.println(pi); | |
for (int i = 1; i <= mas; i++){ | |
// Los que eran jovenes se convierten en adultos | |
pi = pi + pi_jove; | |
// Calcular nacimientos | |
int nacimientos_mes = (int) (Math.random() * (npm_max - npm_min)) + npm_min; | |
pi_jove = nacimientos_mes; | |
if (flag_debug) { | |
System.out.println("Nacimientos mes " + i + ": " + nacimientos_mes); | |
}; | |
// Calcular muertes jovenes | |
int muertes_mes_jove = (int) (Math.random() * (mpm_jove_max - mpm_jove_min)) + mpm_jove_min; | |
// No matar a mas de los que han nacido :( | |
while (muertes_mes_jove>pi_jove){ | |
muertes_mes_jove = (int) (Math.random() * (mpm_jove_max - mpm_jove_min)) + mpm_jove_min; | |
}; | |
int pi_jove_despues_muertes = pi_jove - muertes_mes_jove; | |
if (flag_debug) { | |
System.out.println("Muertes Jovenes mes " + i + ": " + muertes_mes_jove); | |
System.out.println(" Detalle: " + pi_jove + " - " + muertes_mes_jove + " = " + pi_jove_despues_muertes); | |
}; | |
pi_jove = pi_jove_despues_muertes; | |
// Calcular muertes adultos | |
int muertes_mes_adul = (int) (Math.random() * (mpm_adul_max - mpm_adul_min)) + mpm_adul_min; | |
int pi_adul_despues_muertes = pi - muertes_mes_adul; | |
if (flag_debug) { | |
System.out.println("Muertes Adultos mes " + i + ": " + muertes_mes_adul); | |
System.out.println(" Detalle: " + pi + " - " + muertes_mes_adul + " = " + pi_adul_despues_muertes); | |
}; | |
pi = pi_adul_despues_muertes; | |
// Calcular ventas | |
double ventas_mes = (double) (Math.random() * (vpm_max - vpm_min)) + vpm_min; | |
if (flag_debug) { | |
System.out.println("Ventas mes " + i + ": " + ventas_mes + " %00 // " + pi * ventas_mes + " uds."); | |
System.out.println("Uds ANTES vs DESPUES ventas: " + pi + " // " + (int) (pi - (pi * ventas_mes))); | |
System.out.println("\n"); | |
}; | |
pi = (int) (pi - (pi * ventas_mes)); | |
}; | |
return pi; | |
}; | |
public static void main(String[] args) { | |
int pi = 240; // Poblacion Inicial | |
int pi_jove = 0; // Poblacion Inicial | |
int npm_min = 2; // Nacimientos por Mes - MINIMO | |
int npm_max = 45; // Nacimientos por Mes - MAXIMO | |
int mpm_jove_min = 0; // Muertes por Mes - MINIMO | |
int mpm_jove_max = 2; // Muertes por Mes - MAXIMO | |
int mpm_adul_min = 0; // Muertes por Mes - MINIMO | |
int mpm_adul_max = 5; // Muertes por Mes - MAXIMO | |
double vpm_min = 0; // Ventas por Mes - MINIMO | |
double vpm_max = 0.1; // Ventas por Mes - MAXIMO | |
int mas = 12; // Meses a Simular | |
boolean flag_debug = true; // Mostrar o no el detalle de los calculos | |
System.out.println("Te damos la bienvenida a este simulador \nCalcularemos la poblacion de pollos de una finca"); | |
muestra_resumen(pi, pi_jove, npm_min, npm_max, mpm_jove_min, mpm_jove_max, mpm_adul_min, mpm_adul_max, vpm_min, vpm_max, mas, flag_debug); | |
// Modificacion de valores | |
System.out.println("Desea variar los datos anteriormente mostrados? (s/N)"); | |
Scanner scanner = new Scanner(System.in); | |
String variar = scanner.nextLine(); | |
if (variar.equals("S") | variar.equals("s")) { | |
System.out.println("Introduzca, separados por espacios, los siguientes valores:\n Poblacion Inicial, \n Nacimientos por Mes - MINIMO, \n Nacimientos por Mes - MAXIMO, \n Muertes por Mes Jovenes - MINIMO, \n Muertes por Mes Jovenes - MAXIMO, \n Muertes por Mes Adultos - MINIMO, \n Muertes por Mes Adultos - MAXIMO, \n Ventas por Mes - MINIMO, \n Ventas por Mes - MAXIMO, \n Meses a Simular, \n DEBUG "); | |
System.out.println("Ejemplo: " + pi + " " + pi_jove + " " + npm_min + " " + npm_max + " " + mpm_jove_min + " " + mpm_jove_max + " " + mpm_adul_min + " " + mpm_adul_max + " " + vpm_min + " " + vpm_max + " " + mas + " " + flag_debug); | |
System.out.println("SU RESPUESTA: "); | |
Scanner datos_variar = new Scanner(System.in); | |
pi = datos_variar.nextInt(); | |
pi_jove = datos_variar.nextInt(); | |
npm_min = datos_variar.nextInt(); | |
npm_max = datos_variar.nextInt(); | |
mpm_jove_min = datos_variar.nextInt(); | |
mpm_jove_max = datos_variar.nextInt(); | |
mpm_adul_min = datos_variar.nextInt(); | |
mpm_adul_max = datos_variar.nextInt(); | |
vpm_min = datos_variar.nextDouble(); | |
vpm_max = datos_variar.nextDouble(); | |
mas = datos_variar.nextInt(); | |
flag_debug = datos_variar.nextBoolean(); | |
System.out.println("GRACIAS!"); | |
muestra_resumen(pi, pi_jove, npm_min, npm_max, mpm_jove_min, mpm_jove_max, mpm_adul_min, mpm_adul_max, vpm_min, vpm_max, mas, flag_debug); | |
}; | |
int pf = calcula(pi, pi_jove, npm_min, npm_max, mpm_jove_min, mpm_jove_max, mpm_adul_min, mpm_adul_max, vpm_min, vpm_max, mas, flag_debug); | |
System.out.println("\n\n=======================================\nLa poblacion sera de: " + pf + " individuos\n=======================================\n"); | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment