import java.io.*;public class Racional implements Cloneable { private int num, den; public Racional() { } public Racional(int n, int d) { if (d==0.0) //throw new DenominadorCeroException("El denominador no puede ser cero"); System.out.println("ERROR...!\n"); num = n; den = d; } static private int mcd(int m, int n) { int t; while(m>0) { t=m; m=n%m; n=t; } return n; } public int numerador() { return num; } public int denominador() { return den; } static public Racional suma(Racional a, Racional b) { int n = (a.num*b.den)+(b.num*a.den); int d = a.den*b.den; return new Racional(n,d); } static public Racional resta(Racional a, Racional b) { int n = (a.num*b.den)-(b.num*a.den); int d = a.den*b.den; return new Racional(n,d); } static public Racional multiplica(Racional a, Racional b) { int n = a.num*b.num; int d = a.den*b.den; return new Racional(n,d); } static public Racional divide(Racional a, Racional b) { int n = a.num*b.den; int d = a.den*b.num; return new Racional(n,d); } static public Racional simplifica(Racional a) { int x = mcd(Math.abs(a.num),Math.abs(a.den)); int n = a.num/x; int d = a.den/x; return new Racional(n,d); } public String toString() { return (num+"/"+den); } public boolean equals(Object o) { Racional r1 = simplifica(this); Racional r2 = simplifica((Racional)o); return ((r1.num==r2.num)&&(r1.den==r2.den)); } public Object clone() { Racional r = new Racional(num,den); return r; }}