import java.io.*; import java.util.*; import cs1.Keyboard; public class Rational{ int num; int denom; public Rational(){ num = 0; denom = 1; } public int Num(){ return num; } public int Denom(){ return denom; } public Rational( int a, int b ){ num = a; if ( b == 0 ){ System.out.println( "Error: Cannot divide by 0." ); b = 1; } denom = b; } public static Rational mult( Rational c, Rational d ){ Rational l = new Rational( ( c.Num() * d.Num() ), ( c.Denom() * d.Denom() )); return l.reduce(); } public String toString(){ String m = new String(); m = "" + num + " / " + denom; return m; } public Rational reduce(){ int v; v = gcd(); Rational q; q = new Rational( num/v,denom/v ); return q; } public int gcd(){ int g; if ( num >= denom ){ g = denom; } else { g = num; } while ( num%g != 0 || denom%g != 0 ){ g = g - 1; } return g; } public static Rational add( Rational e, Rational f ){ Rational m = new Rational( ( ( e.Num() * f.Denom() ) + ( f.Num() * e.Denom() ) ), ( ( e.Denom() * f.Denom() ) )); return m.reduce(); } public static Rational divide( Rational g, Rational h ){ Rational y = new Rational( h.Denom(), h.Num() ); Rational z = mult( y, g ); return z.reduce(); } public int compareTo( Rational i, Rational j ){ if ( ( i.Num() * j.Denom() ) == ( j.Num() * i.Denom() ) ){ return 0; } else if ( ( i.Num() * j.Denom() ) > ( j.Num() * i.Denom() ) ){ return 1; } else { return -1; } } public static void main (String args[]){ int a, b, c, d, e; System.out.println ("Enter numerator of first rational number"); a = Keyboard.readInt(); System.out.println ("Enter denominator of first rational number"); b = Keyboard.readInt(); System.out.println ("Enter numerator second rational number"); c = Keyboard.readInt(); System.out.println ("Enter denominator second rational number"); d = Keyboard.readInt(); System.out.println ("Enter 1 to add two rational numbers. \nEnter 2 to multiply two rational numbers. \nEnter 3 to reduce a rational number. \nEnter 4 to quit the program"); e = Keyboard.readInt(); Rational x = new Rational(a, b); Rational y = new Rational(c, d); Rational z = new Rational(); if (e == 1) { z = add(x, y); System.out.println (z); } else if (e == 2) { z = mult(x, y); System.out.println (z); } else if (e == 3) { z = x.reduce(); System.out.println (z); z = y.reduce(); System.out.println (z); } else { System.out.println ("Goodbye!"); } } }