Results 1 to 10 of 10
Thread: How to reduce fractions in Java?
- 04-09-2012, 06:17 AM #1
Member
- Join Date
- Apr 2012
- Posts
- 3
- Rep Power
- 0
How to reduce fractions in Java?
I'm new to these forums and I'm not sure if this is the right place to post this question, I hope that's alright. I'm writing a code for my intro to Java Class that manipulated fractions through the different opertions (add, subtr, mult, divide) I have everything done but I am stuck when it comes to reducing fractions I have absolutely no idea what I am supposed to do. My professor gave us this code:
and he says we have to invoke it to simplify the fractions but I have no idea how to incorporate it into my code.Java Code:private int gcf (int a , int b ) { return a%b == 0 ? b : gcf ( b , a%b ); }
Here is my code (please excuse it's noobiness, I'm still learning):
Class 1:
Java Code:public class Fraction { private int numerator; private int denominator; //constructor for building fractions public Fraction(int num, int denom){ numerator = num; denominator = denom; } //simplifying fractions private int gcf (int a , int b ) { return a%b == 0 ? b : gcf ( b , a%b ); } //addition public static Fraction add(Fraction F1, Fraction F2){ if(F1.denominator==0 || F2.denominator==0){ System.out.println("Undefined, you cannot divide by zero."); } if((F1.numerator*F2.denominator + F1.denominator*F2.numerator)==0 || (F1.numerator+F2.numerator)==0){ System.out.println("Sum is: 0"); } if(F1.denominator!=F2.denominator) return new Fraction((F1.numerator*F2.denominator + F1.denominator*F2.numerator),(F1.denominator*F2.denominator)); else if (F1.denominator==F2.denominator) return new Fraction((F1.numerator+F2.numerator),(F1.denominator)); return null; } //subtraction public static Fraction subtract(Fraction F1, Fraction F2){ if(F1.denominator==0 || F2.denominator==0){ System.out.println("Undefined, you cannot divide by zero."); } if((F1.numerator*F2.denominator - F1.denominator*F2.numerator)==0 || (F1.numerator-F2.numerator)==0){ } if(F1.denominator!=F2.denominator) return new Fraction((F1.numerator*F2.denominator - F1.denominator*F2.numerator),(F1.denominator*F2.denominator)); else if (F1.denominator==F2.denominator) return new Fraction((F1.numerator-F2.numerator),(F1.denominator)); return null; } //multiply public static Fraction multiply(Fraction F1, Fraction F2){ if(F1.denominator==0 || F2.denominator==0){ System.out.println("Undefined, you cannot divide by zero."); } return new Fraction((F1.numerator*F2.numerator),(F1.denominator*F2.denominator)); } //divide public static Fraction divide(Fraction F1, Fraction F2){ return new Fraction((F1.numerator*F2.denominator),(F1.denominator*F2.numerator)); } //comparing fraction public static Fraction compare(Fraction F1, Fraction F2){ if((F2.denominator*F1.numerator) > (F2.numerator*F1.denominator)){ System.out.println("Comparing Fraction 1 & Fraction 2: " + F1.numerator+"/"+F1.denominator + ">"+ F2.numerator+ "/"+ F2.denominator); } else if((F2.denominator*F1.numerator) < (F2.numerator*F1.denominator)){ System.out.println("Comparing Fraction 1 & Fraction 2: " + F1.numerator+"/"+F1.denominator + "<"+ F2.numerator+ "/"+ F2.denominator); } else if((F2.denominator*F1.numerator) == (F2.numerator*F1.denominator)){ System.out.println("Comparing Fraction 1 & Fraction 2: " + F1.numerator+"/"+F1.denominator + "="+ F2.numerator+ "/"+ F2.denominator); } return null; } //printing the fraction public String toString(){ return numerator + "/" + denominator ; } }
Class 2:
Java Code:public class TestFraction { public static void main ( String[] args ){ //fraction code (num, den) Fraction fr1 = new Fraction((int)(Math.random()*10), (int) (Math.random()*10)+1); Fraction fr2 = new Fraction((int)(Math.random()*10), (int) (Math.random()*10)+1); //print the fractions in multiple forms System.out.println("Fraction 1: " + fr1 + "\t\tFraction 2: " + fr2); System.out.println("Sum is: " + Fraction.add(fr1, fr2)); System.out.println("Difference is: " + Fraction.subtract(fr1,fr2)); System.out.println("Product is: " + Fraction.multiply(fr1, fr2)); System.out.println("Quotient is: " + Fraction.divide(fr1, fr2)); System.out.print(Fraction.compare(fr1, fr2)); } }
- 04-09-2012, 06:24 AM #2
Moderator
- Join Date
- Feb 2009
- Location
- New Zealand
- Posts
- 4,546
- Rep Power
- 11
Re: How to reduce fractions in Java?
gcf stands for greatest common factor. Eg the gcf of 24 and 16 is 8. Given a fraction like n/m we reduce it by diving the top and bottom by the gcd of n and m. Eg 16/24 becomes 2/3 after diving by 8.
- 04-09-2012, 01:00 PM #3
Member
- Join Date
- Apr 2012
- Posts
- 3
- Rep Power
- 0
Re: How to reduce fractions in Java?
I don't understand how to write the gcd divided by numerator and denominator. Every time I try, it comes out to an error or it makes my two random fractions the same fraction. I don't know what I'm doing wrong, a lot of my code related to gcf ends up being guess work and stabs in the dark, hoping it will work out eventually.
- 04-09-2012, 01:27 PM #4
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,405
- Blog Entries
- 7
- Rep Power
- 17
Re: How to reduce fractions in Java?
If you're doing things right (i.e. make your Fractions immutable) you only have to use the gcf( ... ) method in the constructor, i.e.
kind regards,Java Code:public Fraction(int n, int d) { int gcf= gcf(n, d); this.n= n/gcf; this.d= d/gcf; }
JosWhen people rob a bank they get a penalty; when banks rob people they get a bonus.
- 04-09-2012, 02:02 PM #5
Member
- Join Date
- Apr 2012
- Posts
- 24
- Rep Power
- 0
Re: How to reduce fractions in Java?
I am a beginner. This might help
Java Code:public class Main{ public static void main(String[] args){ Fraction f1=new Fraction(3,8); Fraction f2=new Fraction(5,6); System.out.println(add(f1,f2)); } public static int gfc(int a,int b){ return a%b==0?b:gfc(b,a%b); } public static Fraction add(Fraction f1,Fraction f2){ Fraction result=new Fraction(0,1); int num=f1.num*f2.denom+f2.num*f1.denom; int denom=f1.denom*f2.denom; int x=gfc(num,denom); result.num=num/x; result.denom=denom/x; return result; } } class Fraction{ public int num; public int denom; Fraction(int n,int d){ num=n; denom=d; } public String toString(){ return num+"/"+denom; } }
- 04-09-2012, 02:08 PM #6
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,405
- Blog Entries
- 7
- Rep Power
- 17
Re: How to reduce fractions in Java?
@kosmos: carefully reread my reply #4.
kind regards,
JosWhen people rob a bank they get a penalty; when banks rob people they get a bonus.
- 04-09-2012, 03:16 PM #7
Member
- Join Date
- Apr 2012
- Posts
- 24
- Rep Power
- 0
Re: How to reduce fractions in Java?
@JosAH
" you only have to use the gcf( ... ) method in the constructor"
I do not understand this "i.e. make your Fractions immutable" . What do you mean?Java Code:public static Fraction add(Fraction f1,Fraction f2){ int num=f1.num*f2.denom+f2.num*f1.denom; int denom=f1.denom*f2.denom; return new Fraction(num,denom); }
Τhank you very much.
- 04-09-2012, 03:27 PM #8
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,405
- Blog Entries
- 7
- Rep Power
- 17
- 04-09-2012, 06:43 PM #9
Member
- Join Date
- Apr 2012
- Posts
- 3
- Rep Power
- 0
- 04-09-2012, 08:02 PM #10
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,405
- Blog Entries
- 7
- Rep Power
- 17
Re: How to reduce fractions in Java?
When people rob a bank they get a penalty; when banks rob people they get a bonus.
Similar Threads
-
trouble using fractions
By jeanOliver in forum New To JavaReplies: 2Last Post: 09-06-2011, 08:48 PM -
How do I reduce lag in a java game that I am making?
By rajkobie in forum New To JavaReplies: 4Last Post: 05-13-2011, 03:24 PM -
Reducing fractions
By SwEeTAcTioN in forum New To JavaReplies: 10Last Post: 01-13-2010, 04:51 PM -
How do I reduce Fractions in this program?
By Popedreadlock in forum New To JavaReplies: 8Last Post: 12-08-2008, 12:28 AM -
How to use Java's compression classes to reduce the amount of data sent over a socket
By Java Tip in forum java.netReplies: 0Last Post: 04-07-2008, 07:56 PM


LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks