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!");
}
}
}