elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [JAVA] NEW Operaciones con quebrados ~ ver.2
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [JAVA] NEW Operaciones con quebrados ~ ver.2  (Leído 7,049 veces)
Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
[JAVA] NEW Operaciones con quebrados ~ ver.2
« en: 15 Diciembre 2010, 01:29 am »

Aqui os dejo este codigo que hice de tarea. Asi que mejor que me digan que les parece, y me den muchas criticas, porque herrar es umano.  :-*

Código
  1. /* AUTOR: d3n3k4 (Dnk!)
  2.  * WEB: http://d3n3k4.blogspot.com/
  3.  * FECHA: 15/DIC/2010
  4.  * DESCRIPCION:
  5.  * - Nueva actualizacion para trabajar con quebrados (fracciones).
  6.  * - Introducido resta,multiplicacion,division de dos quebrados.
  7.  * - Con opcion a sumar,restar,multiplicar,dividir un vector de quebrados.
  8.  * NOTA: Este codigo es libre y puede ser usado,modificado... siempre y cuando se
  9.  * mantenga los creditos y comentarios del autor.
  10.  */
  11. import java.util.Scanner;
  12.  
  13. public class clsQuebrado {
  14. //Atributos
  15. private int numerador;
  16. private int denominador;
  17.  
  18. //Contructores
  19. public clsQuebrado(){
  20. this.numerador = 0;
  21. this.denominador = 0;
  22. }
  23. public clsQuebrado(int numerador,int denominador) {
  24. this.numerador = numerador;
  25. this.denominador = denominador;
  26. }
  27. //Setter&Getter
  28. public void setNumerador(int numerador) {
  29. this.numerador = numerador;
  30. }
  31. public void setDenominador(int denominador) {
  32. this.denominador = denominador;
  33. }
  34. public int getNumerador(){
  35. return this.numerador;
  36. }
  37. public int getDenominador(){
  38. return this.denominador;
  39. }
  40. /*
  41. * Calcular Maximo Comun Divisor.
  42. */
  43. private static int mcd(int a, int b) {
  44. int aux;
  45. if (a < 0)
  46. a = a * -1;
  47. if (b < 0)
  48. b = b * -1;
  49. while (b != 0) {
  50. aux = b;
  51. b = a%b;
  52. a = aux;
  53. }
  54. return a;
  55. }
  56. /*
  57. * Calcular Minimo Comum Multiplo.
  58. */
  59. private static int mcm(int a, int b) {
  60. int min = (a*b)/mcd(a,b);
  61. return min;
  62. }
  63. /*
  64. * Reducir/simplificar Quebrado.
  65. */
  66. public clsQuebrado reducir(){
  67. clsQuebrado QuebradoRed = new clsQuebrado();
  68. int max = mcd(this.getNumerador(),this.getDenominador());
  69. QuebradoRed.setDenominador(this.getDenominador()/max);
  70. QuebradoRed.setNumerador(this.getNumerador()/max);
  71. return QuebradoRed;
  72. }
  73. /*
  74. * @see java.lang.Object#toString()
  75. */
  76. public String toString(){
  77. return this.getNumerador()+"/"+this.getDenominador();
  78. }
  79. /*
  80. * Sumar 2 quebrados o vector de quebrados.
  81. */
  82. public static  clsQuebrado sumar(clsQuebrado q1,clsQuebrado q2) {
  83. clsQuebrado QuebradoRes = new clsQuebrado();
  84. int min = mcm(q1.getDenominador(),q2.getDenominador());
  85. QuebradoRes.setDenominador(min);
  86. QuebradoRes.setNumerador(q1.getNumerador()*(min/q1.getDenominador())+q2.getNumerador()*(min/q2.getDenominador()));
  87. return QuebradoRes.reducir();
  88. }
  89. public static clsQuebrado sumar(clsQuebrado[] lista) {
  90. clsQuebrado QuebradoRes = new clsQuebrado();
  91. for (int i = 0; i < lista.length; i++) {
  92. lista[i] = lista[i].reducir();
  93. }
  94. QuebradoRes = sumar(lista[0], lista[1]);
  95. for (int i = 2; i < lista.length; i++) {
  96. QuebradoRes = sumar(QuebradoRes,lista[i]);
  97. }
  98. return QuebradoRes.reducir();
  99. }
  100. /*
  101. * Idem que anterior -> restar.
  102. */
  103. public static clsQuebrado restar(clsQuebrado q1,clsQuebrado q2) {
  104. clsQuebrado QuebradoRes = new clsQuebrado();
  105. int min = mcm(q1.getDenominador(),q2.getDenominador());
  106. QuebradoRes.setDenominador(min);
  107. QuebradoRes.setNumerador(q1.getNumerador()*(min/q1.getDenominador())-q2.getNumerador()*(min/q2.getDenominador()));
  108. return QuebradoRes.reducir();
  109. }
  110. public static clsQuebrado restar(clsQuebrado[] lista) {
  111. clsQuebrado QuebradoRes = new clsQuebrado();
  112. for (int i = 0; i < lista.length; i++) {
  113. lista[i] = lista[i].reducir();
  114. }
  115. QuebradoRes = restar(lista[0], lista[1]);
  116. for (int i = 2; i < lista.length; i++) {
  117. QuebradoRes = restar(QuebradoRes,lista[i]);
  118. }
  119. return QuebradoRes.reducir();
  120. }
  121. /*
  122. * Idem que anterior -> multiplicar.
  123. */
  124. public static clsQuebrado multiplicar(clsQuebrado q1,clsQuebrado q2) {
  125. clsQuebrado QuebradoRes = new clsQuebrado(q1.getNumerador()*q2.getNumerador(),q1.getDenominador()*q2.getDenominador());
  126. return QuebradoRes.reducir();
  127. }
  128. public static clsQuebrado multiplicar(clsQuebrado[] lista) {
  129. clsQuebrado QuebradoRes = new clsQuebrado();
  130. for (int i = 0; i < lista.length; i++) {
  131. lista[i] = lista[i].reducir();
  132. }
  133. QuebradoRes = multiplicar(lista[0], lista[1]);
  134. for (int i = 2; i < lista.length; i++) {
  135. QuebradoRes = multiplicar(QuebradoRes,lista[i]);
  136. }
  137. return QuebradoRes.reducir();
  138. }
  139. /*
  140. * Idem que anterior -> dividir.
  141. */
  142. public static clsQuebrado dividir(clsQuebrado q1,clsQuebrado q2){
  143. clsQuebrado QuebradoRes = new clsQuebrado(q1.getNumerador()*q2.getDenominador(),q1.getDenominador()*q2.getNumerador());
  144. return QuebradoRes.reducir();
  145. }
  146. public static clsQuebrado dividir(clsQuebrado[] lista) {
  147. clsQuebrado QuebradoRes = new clsQuebrado();
  148. for (int i = 0; i < lista.length; i++) {
  149. lista[i] = lista[i].reducir();
  150. }
  151. QuebradoRes = dividir(lista[0], lista[1]);
  152. for (int i = 2; i < lista.length; i++) {
  153. QuebradoRes = dividir(QuebradoRes,lista[i]);
  154. }
  155. return QuebradoRes.reducir();
  156. }
  157. /*
  158. * Lee un quebrado de teclado.
  159. */
  160. public static clsQuebrado leerQuebrado(){
  161. Scanner entrada = new Scanner(System.in);
  162. clsQuebrado QuebradoRes = new clsQuebrado(entrada.nextInt(),entrada.nextInt());
  163. return QuebradoRes.reducir();
  164. }
  165. /*
  166. * Obtienes un string de la operacion total del arreglo.
  167. */
  168. public static String escribeExpresion(clsQuebrado[] lista) {
  169. String exp = "";
  170. for (int i = 0; i < lista.length; i++) {
  171. if (i > 0 && lista[i].getNumerador() >= 0)
  172. exp += "+";
  173. exp += lista[i].toString();
  174. }
  175. exp += "=";
  176. return exp;
  177. }
  178. }
  179.  

Ejemplo de uso:
Código
  1. public class ProgramaQuebrados {
  2.  
  3. public static void main(String[] args) {
  4. Quebrado q1,q2,res;
  5. System.out.println("Introduce primer quebrado:");
  6. q1 = Quebrado.leerQuebrado();
  7. System.out.println("Introduce primer quebrado:");
  8. q2 = Quebrado.leerQuebrado();
  9. System.out.println("Pruebas Operaciones");
  10. res = Quebrado.sumar(q1, q2);
  11. System.out.println(q1+" + "+q2+" = "+res);
  12. res = Quebrado.restar(q1, q2);
  13. System.out.println(q1+" - "+q2+" = "+res);
  14. res = Quebrado.multiplicar(q1, q2);
  15. System.out.println(q1+" * "+q2+" = "+res);
  16. res = Quebrado.dividir(q1, q2);
  17. System.out.println(q1+" / "+q2+" = "+res);
  18. System.out.println("Prueba sumaQuebrados y escribeExpresion");
  19. Quebrado[] lista = new Quebrado[5];
  20. lista[0] =  new Quebrado(10,20);
  21. lista[1] =  new Quebrado(10,30);
  22. lista[2] =  new Quebrado(-10,10);
  23. lista[3] =  new Quebrado(30,20);
  24. lista[4] =  new Quebrado(-10,20);
  25. res = Quebrado.sumaQuebrados(lista);
  26. System.out.print(Quebrado.escribeExpresion(lista));
  27. System.out.println(res);
  28. }
  29. }
  30.  

xDnk!


En línea




Comentar es agradecer.
Visita Mi Blob
sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: [JAVA] NEW Operaciones con quebrados ~ ver.2
« Respuesta #1 en: 15 Diciembre 2010, 06:54 am »

la primera letra de una clase no comiensa con mayuscula las clases no comiensan con cls los metodos mcd y mcm no tienen nada que ver deverian estar en otra clase
borra la importacion a scaner mejor crea otra clases para hacer las operaciones de lectura
aparte de eso es buen codigo es realmente extraordinario es decir que es algo que casi nunca pasa encontrar codigo que se entienda y menos a la primera  ;-)  ;-)


En línea

Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: [JAVA] NEW Operaciones con quebrados ~ ver.2
« Respuesta #2 en: 15 Diciembre 2010, 09:18 am »

UPs gran fallo el de las mayus, se me paso, justo al final lo cambie sin coprobar. Las funciones de lectura tienes razon, lo pense asi pero como era tarde se me paso. XD.

Pero no veo porque tengo k sacar de la clase el maximo comun divisor y el minimo comun multiplo?.

Saludos!
« Última modificación: 15 Diciembre 2010, 09:20 am por Dnk! » En línea




Comentar es agradecer.
Visita Mi Blob
sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: [JAVA] NEW Operaciones con quebrados ~ ver.2
« Respuesta #3 en: 15 Diciembre 2010, 17:45 pm »

si un metodo de una clase usa variables pasadas como parametro y no usa ninguna de las globalas te esta gritando que deberia estar en otra clase asi puedes reusar esa funcion en cualquier parte que quieras
En línea

Dnk!

Desconectado Desconectado

Mensajes: 38



Ver Perfil WWW
Re: [JAVA] NEW Operaciones con quebrados ~ ver.2
« Respuesta #4 en: 15 Diciembre 2010, 18:04 pm »

Tienes razon, pero la logica del objeto necesita de esas funciones internas para poder realizar el proceso. No se si me entiendes, yo a ti si pero difiero en esa parte.

La clase necesita trabajar con esos metodos para realizarlo, no lo veo logico fuera.

EDITO: Una posible solucion, seria crear otra clase, y desde la clase Quebrado llamar a estos metodos no?
En línea




Comentar es agradecer.
Visita Mi Blob
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Operaciones con
.NET (C#, VB.NET, ASP)
David Vans 0 2,749 Último mensaje 25 Abril 2007, 18:06 pm
por David Vans
4 operaciones aritmeticas en Java Eclipse
Java
Emili 4 9,446 Último mensaje 12 Octubre 2009, 07:48 am
por forerito
operaciones aritmeticas en JAVA ECLIPSE
Java
leliCabello 0 6,907 Último mensaje 12 Octubre 2009, 02:47 am
por leliCabello
Operaciones con conjuntos en java « 1 2 »
Java
cesarz 10 28,507 Último mensaje 19 Febrero 2012, 03:27 am
por bengy
Problema en operaciones con Java.
Java
Tronos154 2 2,944 Último mensaje 7 Junio 2016, 20:32 pm
por hectornunezrivas
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines