Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Edward Ho
- Nov 2, 2009
- */
- public class mixedFraction extends Fraction
- {
- private int whole;
- public mixedFraction () // constructor
- {
- //super(0,1);
- whole = 0;
- num = 0;
- den = 1;
- }
- public mixedFraction (int w, int n, int d)
- {
- //super(n,d);
- whole = w;
- num = n;
- if (d != 0)
- den = d;
- else
- throw new IllegalArgumentException("Fraction cannot have 0 as denominator");
- if (num < 0 && den < 0)
- {
- num = -num;
- den = -den;
- }
- int x = gcf(num,den);
- num = num/x;
- den = den/x;
- if (den > 0)
- {
- while(num >= den)
- {
- whole++;
- num=num-den;
- }
- }
- else if (den < 0)
- {
- while (-num <= den)
- {
- whole--;
- num=num+den;
- }
- }
- else
- throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
- }
- public mixedFraction (int w)
- {
- super(0,1);
- whole = w;
- //num = 0;
- //den = 1;
- }
- public mixedFraction (int n, int d)
- {
- //super(n,d);
- whole = 0;
- num = n;
- if (d != 0)
- den = d;
- else
- throw new IllegalArgumentException("Fraction cannot have 0 as denominator");
- if (num < 0 && den < 0)
- {
- num = -num;
- den = -den;
- }
- int x = super.gcf(num,den);
- num = num/x;
- den = den/x;
- if (den > 0)
- {
- while(num >= den)
- {
- whole++;
- num=num-den;
- }
- }
- else if (den < 0)
- {
- while (-num <= den)
- {
- whole--;
- num=num+den;
- }
- }
- else
- throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
- }
- /*private int gcf(int a, int b)
- {
- int d, e;
- e=a;
- d=b;
- if (a<0)
- e=-a;
- if (b<0)
- d=-b;
- if (a == 0 || b == 0)
- return 1;
- while (e!=d)
- {if (e>d)
- e=e-d;
- else
- d=d-e;
- }
- return d;
- }*/
- public mixedFraction (mixedFraction n)
- {
- //super(n);
- whole = n.whole;
- num = n.num; // pulling num on n > putting into num
- den = n.den;
- if (num < 0 && den < 0)
- {
- num = -num;
- den = -den;
- }
- if (den > 0)
- {
- while(num >= den)
- {
- whole++;
- num=num-den;
- }
- }
- else if (den < 0)
- {
- while (-num <= den)
- {
- whole--;
- num=num+den;
- }
- }
- else
- throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
- }
- public mixedFraction mixedfractionAdd (mixedFraction a)
- {
- //super.fractionAdd(a);
- int newnum;
- int newden;
- newnum = (den * whole) + num;
- a.num = (a.den * a.whole) + a.num;
- int newwhole = whole;
- newwhole = 0;
- a.whole = 0;
- int newernum;
- int newerden;
- newernum = (newnum * a.den) + (a.num * den);
- newerden = den * a.den;
- if (newernum <0 && den <0)
- {
- newernum = -newernum;
- newerden = -newerden;
- }
- return new mixedFraction(newwhole, newernum, newerden);
- }
- public mixedFraction mixedfractionSubtract (mixedFraction a)
- {
- //super.fractionAdd(a);
- int newnum;
- int newden;
- newnum = (den * whole) + num;
- a.num = (a.den * a.whole) + a.num;
- int newwhole = whole;
- newwhole = 0;
- a.whole = 0;
- int newernum;
- int newerden;
- newernum = (newnum * a.den) - (a.num * den);
- newerden = den * a.den;
- if (newernum <0 && den <0)
- {
- newernum = -newernum;
- newerden = -newerden;
- }
- return new mixedFraction(newwhole, newernum, newerden);
- }
- public mixedFraction mixedfractionMultiply (mixedFraction a)
- {
- //super.fractionAdd(a);
- int newnum;
- int newden;
- newnum = (den * whole) + num;
- a.num = (a.den * a.whole) + a.num;
- int newwhole = whole;
- newwhole = 0;
- a.whole = 0;
- int newernum;
- int newerden;
- newernum = newnum * a.num;
- newerden = den * a.den;
- if (newernum <0 && den <0)
- {
- newernum = -newernum;
- newerden = -newerden;
- }
- return new mixedFraction(newwhole, newernum, newerden);
- }
- public mixedFraction mixedfractionDivide (mixedFraction a)
- {
- //super.fractionAdd(a);
- int newnum;
- int newden;
- newnum = (den * whole) + num;
- a.num = (a.den * a.whole) + a.num;
- int newwhole = whole;
- newwhole = 0;
- a.whole = 0;
- int newernum;
- int newerden;
- if (a.num!=0)
- {
- newernum = newnum * a.den;
- newerden = den * a.num;
- if (newernum <0 && den <0)
- {
- newernum = -newernum;
- newerden = -newerden;
- }
- }
- else
- throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
- return new mixedFraction(newwhole, newernum, newerden);
- }
- public void mixedfractionPrint()
- {
- if (whole == 0 && num == 0)
- System.out.println(0);
- else if (whole != 0 && num == 0)
- System.out.println(whole);
- else if (whole == 0)
- System.out.println(num +"/"+ den);
- else
- System.out.println(whole +" "+ num +"/"+ den);
- }
- }
Add Comment
Please, Sign In to add comment