Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gonzaleztroyano/804b2349dff4555d9649efbf63a23df4 to your computer and use it in GitHub Desktop.
Save gonzaleztroyano/804b2349dff4555d9649efbf63a23df4 to your computer and use it in GitHub Desktop.
/**
*
* 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