All pastes #730299 Raw Edit

Rational

public text v1 · immutable
·published 2007-10-09 02:52 UTC
rendered paste body
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!");
    }
  }
}