Monos en contenedores


/ Published in: Java
Save to your folder(s)

Un barril contendrá 11 monos, una jaula contendrá 7 monos y un coco contendrá 1 mono. Pida de entrada al usuario una cantidad de monos, y luego distribuya a los monos con el fin de minimizar el número de contenedores usados. En un contenedor pueden ir 10 barriles, 5 jaulas y 100 cocos.


Copy this code and paste it in your HTML
  1. //Importación de la API java.io para usar BufferedReader
  2. import java.io.*;
  3.  
  4. class Container{
  5. //Cantidad total de monos introducida por el usuario
  6. private int monos;
  7.  
  8. //Método asignar
  9. public void set(int totalMonos){
  10. monos = totalMonos;
  11. }
  12.  
  13. //Obtener cantidad de contenedores
  14. public int getCont(int maxCant){
  15. if(monos%maxCant == 0)
  16. return monos/maxCant;
  17. else
  18. return monos/maxCant+1;
  19. }
  20.  
  21. //Obtener cantidad de barriles, jaulas o cocos
  22. public int getCant(int monosDif, int maxCant, int maxCont){
  23. int total;
  24.  
  25. //Si la diferencia de monos es igual a 0
  26. if(monosDif == 0)
  27. return 0;
  28. else
  29. {
  30. //Si la cantidad de monos es menor o igual a la cantidad total
  31. if(monosDif <= maxCant)
  32. return 1;
  33. //Si la cantidad de monos es mayor que la cantidad total
  34. else
  35. {
  36. //Cantidad de contenedores, barriles, jaulas o cocos sin tomar en cuenta el residuo
  37. total = monosDif/maxCant;
  38.  
  39. //Si la cantidad total es mayor que la cantidad por contenedor
  40. if(total > maxCont)
  41. return maxCont;
  42. //Si la cantidad total es menor o igual que la cantidad por contenedor
  43. else
  44. return total;
  45. }
  46. }
  47. }
  48.  
  49. //Obtener cantidad de residuo de monos
  50. public int getDif(int monosDif, int maxCant, int maxCont){
  51. int total;
  52.  
  53. //Si la diferencia de monos es igual a 0
  54. if(monosDif == 0)
  55. return 0;
  56. else
  57. {
  58. //Si la cantidad de monos es menor o igual a la cantidad total
  59. if(monosDif <= maxCant)
  60. return 0;
  61. //Si la cantidad de monos es mayor que la cantidad total
  62. else
  63. {
  64. //Cantidad de contenedores, barriles, jaulas o cocos sin tomar en cuenta el residuo
  65. total = monosDif/maxCant;
  66.  
  67. //Si la cantidad total es mayor que la cantidad permitida por contenedor
  68. if(total > maxCont)
  69. return (total-maxCont)*maxCant+monosDif%maxCant;
  70.  
  71. //Si la cantidad total es menor o igual que la cantidad por contenedor
  72. else
  73. return 0;
  74. }
  75. }
  76. }
  77.  
  78. //Método que trae los monos al programa principal
  79. public int getMonos(){
  80. return monos;
  81. }
  82. }
  83.  
  84. public class Monos{
  85. public static void main(String[] x) throws IOException, InterruptedException{
  86. //CONSTANTES => Cantidad de monos por contenedores, barriles, jaulas o cocos
  87. final int MAX_CONT = 245, MAX_BAR = 11, MAX_JAU = 7, MAX_COCO = 1;
  88. //CONSTANTES => Cantidad de barriles, jaulas o cocos por contenedor
  89. final int CANT_BAR = 10, CANT_JAU = 5, CANT_COCO = 100;
  90. //Variables a utilizar
  91. int barril=0, jaula=0, coco=0, contenedor, monos, read, total;
  92. //Monos por barriles, jaulas, cocos
  93. int mbar=0, mjau=0, mco=0;
  94.  
  95. //Declaración del objeto gestion instanciando a la clase Container
  96. Container gestion = new Container();
  97.  
  98. //Declaración del objeto tipo BufferedReader y asignación de espacio de memoria
  99.  
  100. //Mensaje de bienvenida
  101. System.out.println("\t\t\t¡Es la hora de ordenar monitos!\n"+
  102. "En esta aplicación deberás introducir un total de monos"+
  103. "que desees ordenar en contenedores. Esta aplicación te dirá"+
  104. "cuántos contenedores deberás usar para ordenar tus monos"+
  105. "recordando que cada contenedor permite 10 barriles, 5 jaulas"+
  106. "100 cocos. Y que cada barril permite 11 monos, cada jaula 7 monos"+
  107. "y cada coco 1 mono.\n");
  108.  
  109. //Petición al usuario para iniciar la operación
  110. System.out.print("¿Listo para comenzar? S/N: ");
  111. read = Character.toUpperCase(br.read());
  112. br.skip(1);
  113.  
  114. if(read == 'N'){
  115. System.out.println("\n\n-----------------------\n"+
  116. "¡Hasta la próxima!");
  117. System.exit(0);
  118. }
  119.  
  120. else
  121. {
  122. do{
  123. //Lectura de la cantidad de monos totales
  124. System.out.print("\n\n-----------------------\n"+
  125. "Introduzca la cantidad de monos: ");
  126. read = Integer.parseInt(br.readLine());
  127.  
  128. //Llamado al método asignar y enviar la variable read con la cantidad de monos
  129. gestion.set(read);
  130.  
  131. //Asignación de la cantidad de monos
  132. monos = gestion.getMonos();
  133.  
  134. //Cantidad de contenedores
  135. contenedor = gestion.getCont(MAX_CONT);
  136.  
  137. //Hacer un breve delay para que se vea bonito el programa
  138. System.out.println("\n\n-----------------------\n"+
  139. "Procesando información... Por favor espere..");
  140. Thread.sleep(2000);
  141.  
  142. while(monos != 0){
  143. //Acumula cantidad de barriles
  144. mbar += monos;
  145. barril += gestion.getCant(monos, MAX_BAR, CANT_BAR);
  146.  
  147. //Asigna a monos la cantidad del residuo luego de depositarlos en barriles
  148. monos = gestion.getDif(monos, MAX_BAR, CANT_BAR);
  149. mbar -= monos;
  150.  
  151. //Acumula cantidad de jaulas
  152. mjau += monos;
  153. jaula += gestion.getCant(monos, MAX_JAU, CANT_JAU);
  154.  
  155. //Asigna a monos la cantidad del residuo luego de depositarlos en jaulas
  156. monos = gestion.getDif(monos, MAX_JAU, CANT_JAU);
  157. mjau -= monos;
  158.  
  159. //Acumula cantidad de cocos
  160. mco += monos;
  161. coco += gestion.getCant(monos, MAX_COCO, CANT_COCO);
  162.  
  163. //Asigna a monos la cantidad del residuo luego de depositarlos en cocos
  164. monos = gestion.getDif(monos, MAX_COCO, CANT_COCO);
  165. mco -= monos;
  166. }
  167.  
  168. total = mbar + mjau + mco;
  169.  
  170. System.out.println("\n\n-----------------------\n"+
  171. "Cantidad de contenedores: "+contenedor+"\n\n"+
  172. "Cantidad de barriles: "+barril+"\n\tMonos por barriles: "+mbar+"\n\n"+
  173. "Cantidad de jaulas: "+jaula+"\n\tMonos por jaulas: "+mjau+"\n\n"+
  174. "Cantidad de cocos: "+coco+"\n\tMonos por cocos: "+mco+"\n\n"+
  175. "Total de monos: "+total);
  176.  
  177. System.out.println("\n\n-----------------------\n"+
  178. "¿Desea probar otra vez? S/N: ");
  179. read = Character.toUpperCase(br.read());
  180. br.skip(1);
  181.  
  182. }while(read == 'S');
  183.  
  184. System.out.println("\n\n-----------------------\n"+
  185. "¡Hasta la próxima!");
  186. System.exit(0);
  187. }
  188. }
  189. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.