Question
I need to extend this program to work with N random rational numbers, where N is entered by the user (N>3): class Rational { private
I need to extend this program to work with N random rational numbers, where N is entered by the user (N>3):
class Rational {
private int numerator; private int denominator;
public Rational() //default constructor { numerator = 0; denominator = 1; }
public Rational (int a, int b)//argument constructor { numerator = a; denominator = b; }
public Rational sum (Rational r) { reduce(); //reduce the sum int num, den; den = denominator * r.getDenominator();
num = numerator * r.getDenominator() + r.getNumerator() * denominator;
return new Rational (num, den); }
public int getNumerator() { return numerator; }
public int getDenominator() { return denominator; }
public String toString () { return numerator + "/" + denominator; }
public void reduce() {
int factor; factor = gcd(numerator, denominator); numerator = numerator / factor; denominator = denominator / factor; }
private int gcd (int x, int y) {
int t; while (y>0) { t = x % y; x = y; y = t; } return x; }
public double toDecimal() //convert fractional to decimal { return (double)numerator/denominator; }
public boolean greaterThan(Rational r) // compare two rational numbers { if(this.toDecimal() > r.toDecimal()) return true; else return false; }
public boolean smallerThan(Rational r) // compare two rational numbers { if(this.toDecimal() < r.toDecimal()) return true; else return false; }
}
import java.util.Random;
class TestRational { public static void main (String[] args) { int a, b, c, d, e, f; Random rationalRand = new Random(); a = rationalRand.nextInt(9) + 1; b = rationalRand.nextInt(9) + 1; d = rationalRand.nextInt(9) + 1; c = rationalRand.nextInt(9) + 1; e = rationalRand.nextInt(9) + 1; f = rationalRand.nextInt(9) + 1; Rational r1 = new Rational(a,b); Rational r2 = new Rational(c,d); Rational r3 = new Rational(e,f); int numerator,denominator; Rational r4 = new Rational(); System.out.println("rational Numbers : "+r1+","+r2+","+r3); if(r1.greaterThan(r2)) { if(r1.greaterThan(r3)) { numerator = r1.getNumerator(); denominator = r1.getDenominator(); } else { numerator = r3.getNumerator(); denominator = r3.getDenominator(); } } else { if(r2.greaterThan(r3)) { numerator = r2.getNumerator(); denominator = r2.getDenominator(); } else { numerator = r3.getNumerator(); denominator = r3.getDenominator(); } } double r = (double)numerator/denominator; System.out.println(" Maximum :"+ numerator+"/"+denominator+ "("+r+")"); if(r1.smallerThan(r2)) { if(r1.smallerThan(r3)) { numerator = r1.getNumerator(); denominator = r1.getDenominator(); } else { numerator = r3.getNumerator(); denominator = r3.getDenominator(); } } else { if(r2.smallerThan(r3)) { numerator = r2.getNumerator(); denominator = r2.getDenominator(); } else { numerator = r3.getNumerator(); denominator = r3.getDenominator(); } } r = (double)numerator/denominator; System.out.println(" Minimum :"+ numerator+"/"+denominator+ "("+r+")"); r4 = r4.sum(r1); r4 = r4.sum(r2); r4 = r4.sum(r3); r4.reduce(); //reduce the sum of three Rational numbers Rational avg = new Rational(r4.getNumerator(),r4.getDenominator()*3); avg.reduce(); System.out.println(" Sum = "+r4+"("+r4.toDecimal()+")"); System.out.println(" Average = "+avg+"("+r4.toDecimal()/3+")"); // avg rational number divided by 3 } }
**You can't use arrays, or enumerations. **
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started