Código
/* AUTOR: d3n3k4 (Dnk!) * WEB: http://d3n3k4.blogspot.com/ * FECHA: 15/DIC/2010 * DESCRIPCION: * - Nueva actualizacion para trabajar con quebrados (fracciones). * - Introducido resta,multiplicacion,division de dos quebrados. * - Con opcion a sumar,restar,multiplicar,dividir un vector de quebrados. * NOTA: Este codigo es libre y puede ser usado,modificado... siempre y cuando se * mantenga los creditos y comentarios del autor. */ import java.util.Scanner; public class clsQuebrado { //Atributos private int numerador; private int denominador; //Contructores public clsQuebrado(){ this.numerador = 0; this.denominador = 0; } public clsQuebrado(int numerador,int denominador) { this.numerador = numerador; this.denominador = denominador; } //Setter&Getter public void setNumerador(int numerador) { this.numerador = numerador; } public void setDenominador(int denominador) { this.denominador = denominador; } public int getNumerador(){ return this.numerador; } public int getDenominador(){ return this.denominador; } /* * Calcular Maximo Comun Divisor. */ private static int mcd(int a, int b) { int aux; if (a < 0) a = a * -1; if (b < 0) b = b * -1; while (b != 0) { aux = b; b = a%b; a = aux; } return a; } /* * Calcular Minimo Comum Multiplo. */ private static int mcm(int a, int b) { int min = (a*b)/mcd(a,b); return min; } /* * Reducir/simplificar Quebrado. */ public clsQuebrado reducir(){ clsQuebrado QuebradoRed = new clsQuebrado(); int max = mcd(this.getNumerador(),this.getDenominador()); QuebradoRed.setDenominador(this.getDenominador()/max); QuebradoRed.setNumerador(this.getNumerador()/max); return QuebradoRed; } /* * @see java.lang.Object#toString() */ return this.getNumerador()+"/"+this.getDenominador(); } /* * Sumar 2 quebrados o vector de quebrados. */ public static clsQuebrado sumar(clsQuebrado q1,clsQuebrado q2) { clsQuebrado QuebradoRes = new clsQuebrado(); int min = mcm(q1.getDenominador(),q2.getDenominador()); QuebradoRes.setDenominador(min); QuebradoRes.setNumerador(q1.getNumerador()*(min/q1.getDenominador())+q2.getNumerador()*(min/q2.getDenominador())); return QuebradoRes.reducir(); } public static clsQuebrado sumar(clsQuebrado[] lista) { clsQuebrado QuebradoRes = new clsQuebrado(); for (int i = 0; i < lista.length; i++) { lista[i] = lista[i].reducir(); } QuebradoRes = sumar(lista[0], lista[1]); for (int i = 2; i < lista.length; i++) { QuebradoRes = sumar(QuebradoRes,lista[i]); } return QuebradoRes.reducir(); } /* * Idem que anterior -> restar. */ public static clsQuebrado restar(clsQuebrado q1,clsQuebrado q2) { clsQuebrado QuebradoRes = new clsQuebrado(); int min = mcm(q1.getDenominador(),q2.getDenominador()); QuebradoRes.setDenominador(min); QuebradoRes.setNumerador(q1.getNumerador()*(min/q1.getDenominador())-q2.getNumerador()*(min/q2.getDenominador())); return QuebradoRes.reducir(); } public static clsQuebrado restar(clsQuebrado[] lista) { clsQuebrado QuebradoRes = new clsQuebrado(); for (int i = 0; i < lista.length; i++) { lista[i] = lista[i].reducir(); } QuebradoRes = restar(lista[0], lista[1]); for (int i = 2; i < lista.length; i++) { QuebradoRes = restar(QuebradoRes,lista[i]); } return QuebradoRes.reducir(); } /* * Idem que anterior -> multiplicar. */ public static clsQuebrado multiplicar(clsQuebrado q1,clsQuebrado q2) { clsQuebrado QuebradoRes = new clsQuebrado(q1.getNumerador()*q2.getNumerador(),q1.getDenominador()*q2.getDenominador()); return QuebradoRes.reducir(); } public static clsQuebrado multiplicar(clsQuebrado[] lista) { clsQuebrado QuebradoRes = new clsQuebrado(); for (int i = 0; i < lista.length; i++) { lista[i] = lista[i].reducir(); } QuebradoRes = multiplicar(lista[0], lista[1]); for (int i = 2; i < lista.length; i++) { QuebradoRes = multiplicar(QuebradoRes,lista[i]); } return QuebradoRes.reducir(); } /* * Idem que anterior -> dividir. */ public static clsQuebrado dividir(clsQuebrado q1,clsQuebrado q2){ clsQuebrado QuebradoRes = new clsQuebrado(q1.getNumerador()*q2.getDenominador(),q1.getDenominador()*q2.getNumerador()); return QuebradoRes.reducir(); } public static clsQuebrado dividir(clsQuebrado[] lista) { clsQuebrado QuebradoRes = new clsQuebrado(); for (int i = 0; i < lista.length; i++) { lista[i] = lista[i].reducir(); } QuebradoRes = dividir(lista[0], lista[1]); for (int i = 2; i < lista.length; i++) { QuebradoRes = dividir(QuebradoRes,lista[i]); } return QuebradoRes.reducir(); } /* * Lee un quebrado de teclado. */ public static clsQuebrado leerQuebrado(){ clsQuebrado QuebradoRes = new clsQuebrado(entrada.nextInt(),entrada.nextInt()); return QuebradoRes.reducir(); } /* * Obtienes un string de la operacion total del arreglo. */ for (int i = 0; i < lista.length; i++) { if (i > 0 && lista[i].getNumerador() >= 0) exp += "+"; exp += lista[i].toString(); } exp += "="; return exp; } }
Ejemplo de uso:
Código
public class ProgramaQuebrados { Quebrado q1,q2,res; q1 = Quebrado.leerQuebrado(); q2 = Quebrado.leerQuebrado(); res = Quebrado.sumar(q1, q2); res = Quebrado.restar(q1, q2); res = Quebrado.multiplicar(q1, q2); res = Quebrado.dividir(q1, q2); Quebrado[] lista = new Quebrado[5]; lista[0] = new Quebrado(10,20); lista[1] = new Quebrado(10,30); lista[2] = new Quebrado(-10,10); lista[3] = new Quebrado(30,20); lista[4] = new Quebrado(-10,20); res = Quebrado.sumaQuebrados(lista); } }
xDnk!