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.
Ejemplo de uso:
xDnk!
Código (java) [Seleccionar]
/* 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()
*/
public String 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(){
Scanner entrada = new Scanner(System.in);
clsQuebrado QuebradoRes = new clsQuebrado(entrada.nextInt(),entrada.nextInt());
return QuebradoRes.reducir();
}
/*
* Obtienes un string de la operacion total del arreglo.
*/
public static String escribeExpresion(clsQuebrado[] lista) {
String exp = "";
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 (java) [Seleccionar]
public class ProgramaQuebrados {
public static void main(String[] args) {
Quebrado q1,q2,res;
System.out.println("Introduce primer quebrado:");
q1 = Quebrado.leerQuebrado();
System.out.println("Introduce primer quebrado:");
q2 = Quebrado.leerQuebrado();
System.out.println("Pruebas Operaciones");
res = Quebrado.sumar(q1, q2);
System.out.println(q1+" + "+q2+" = "+res);
res = Quebrado.restar(q1, q2);
System.out.println(q1+" - "+q2+" = "+res);
res = Quebrado.multiplicar(q1, q2);
System.out.println(q1+" * "+q2+" = "+res);
res = Quebrado.dividir(q1, q2);
System.out.println(q1+" / "+q2+" = "+res);
System.out.println("Prueba sumaQuebrados y escribeExpresion");
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);
System.out.print(Quebrado.escribeExpresion(lista));
System.out.println(res);
}
}
xDnk!