-
Notifications
You must be signed in to change notification settings - Fork 0
/
Fraction1.java
136 lines (111 loc) · 2.61 KB
/
Fraction1.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//@vsabhnani
import java.util.*;
import java.text.*;
public class Fraction1
{
private int num;
private int denom;
public Fraction1 ()
{
num = 0;
denom = 1;
}
public Fraction1 (int userNum, int userDenom)
{
num = userNum;
denom = userDenom;
}
public Fraction1 (int userNum)
{
num = userNum;
denom = 1;
}
public Fraction1 (Fraction1 frac)
{
this.num = frac.num;
this.denom = frac.denom;
}
// public Fraction getNumDenom()
// {
// return
// }
public void setNumDenom(int numer, int denomin)
{
num = numer;
denom = denomin;
}
public Fraction1 add (Fraction1 fra)
{
int newNum = ((fra.num * denom) + (num * fra.denom));
int newDenom = denom * fra.denom;
Fraction1 frac = new Fraction1 (newNum, newDenom);
return frac.reduce();
}
public Fraction1 subtract (Fraction1 fra)
{
Fraction1 frac = new Fraction1(-fra.num,fra.denom);
return add(frac);
}
public Fraction1 multiply (Fraction1 fra)
{
int newNum = num * fra.num;
int newDenom = denom * fra.denom;
Fraction1 frac = new Fraction1 (newNum, newDenom);
return frac.reduce();
}
public Fraction1 divide (Fraction1 fra)
{
Fraction1 frac = new Fraction1(fra.denom, fra.num);
return multiply(frac);
}
public String toString()
{
if (this.num == 0 && this.denom != 0)
{
String result = "0";
return result;
}
else if (this.denom == 0)
{
String result = "UNDEFINED";
return result;
}
else if (this.denom == 1)
{
String result = "" + this.num;
return result;
}
else
{
String result = this.num +"/" + this.denom;
return result;
}
}
public int gcd (int d1, int d2)
{
int factor = d2;
while (d2 != 0)
{
factor = d2;
d2 = d1 % d2;
d1 = factor;
}
return d1;
}
private Fraction1 reduce()
{
Fraction1 result = new Fraction1();
int common = 0;
int numer = Math.abs(num);
int denomin = Math.abs(denom);
if (numer > denomin)
common = gcd(numer, denomin);
else if (num < denomin)
common = gcd(denomin, numer);
else
common = numer;
result.num = num / common;
result.denom = denom / common;
return result;
}
}