Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions

Question

9. Mohawk Industries Inc.

Answered: 1 week ago