//***************************************************************************** // // Beenish Chaudry, Geetika Tewari, Elif Tosun and // Ileana Streinu // // Summer 1999, Fall 1999, Spring 2000 // //***************************************************************************** // // Rational.java // //***************************************************************************** import java.awt.*; import java.awt.event.*; import java.lang.*; import java.io.*; import java.util.*; public class Rational { int d, n; //************************ // // Rational constructor // //************************ public Rational (int a, int b) { n = a; d = b; } // end constructor //************************ // // Print // //************************ public void Print() { System.out.println("( "+ n +", " + d + ")"); }// end Print //************************ // // ToString // //************************ public String ToString() { return("( "+ n +", " + d + ")"); }// end ToString //************************ // // AddR // //************************ public Rational AddR (Rational a) { Rational b = new Rational(1, 1); if(d == a.d) { b.d = d; b.n = n + a.n; } else { b.n = (n*a.d)+(d*a.n); b.d = d*a.d; }; return b; }// end AddR //************************ // // SubR // //************************ public Rational SubR (Rational a) { Rational b = new Rational(1, 1); if(d == a.d) { b.d = d; b.n = n - a.n; } else { b.n = (n*a.d)-(d*a.n); b.d = d*a.d; }; return b; }// end SubR //************************ // // MulR // //************************ public Rational MulR (Rational a) { Rational b = new Rational(1, 1); b.n = n*a.n; b.d = d*a.d; return b; } // end MulR //************************ // // DivR // //************************ public Rational DivR (Rational a) { Rational b = new Rational(1, 1); b.n = n*a.d; b.d = d*a.n; if (b.d == 0) return(Constants.Infinity); return b; } // end DivR //************************ // // RelToAbs // //************************ public int RelToAbs(int trans, Rational unitL, int sig) { Rational tmp = this.MulR(unitL); int a = tmp.n/tmp.d; a = a*sig + trans; // careful about the sign of translation ???? return(a); } // end RelToAbs //************************ // // Reset // //************************ public void Reset () { this.n = 1; this.d = 1; } } // end class Rational