Guest User

Untitled

a guest
Jul 17th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.90 KB | None | 0 0
  1. /**
  2. Edward Ho
  3. Nov 2, 2009
  4. */
  5.  
  6.  
  7. public class mixedFraction extends Fraction
  8. {
  9. private int whole;
  10.  
  11. public mixedFraction () // constructor
  12. {
  13. //super(0,1);
  14. whole = 0;
  15. num = 0;
  16. den = 1;
  17.  
  18. }
  19.  
  20. public mixedFraction (int w, int n, int d)
  21. {
  22. //super(n,d);
  23. whole = w;
  24.  
  25.  
  26. num = n;
  27.  
  28. if (d != 0)
  29. den = d;
  30.  
  31.  
  32. else
  33. throw new IllegalArgumentException("Fraction cannot have 0 as denominator");
  34.  
  35. if (num < 0 && den < 0)
  36. {
  37. num = -num;
  38. den = -den;
  39. }
  40. int x = gcf(num,den);
  41. num = num/x;
  42. den = den/x;
  43.  
  44. if (den > 0)
  45. {
  46. while(num >= den)
  47. {
  48. whole++;
  49. num=num-den;
  50. }
  51. }
  52.  
  53.  
  54. else if (den < 0)
  55. {
  56. while (-num <= den)
  57. {
  58. whole--;
  59. num=num+den;
  60. }
  61. }
  62. else
  63. throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
  64.  
  65. }
  66.  
  67. public mixedFraction (int w)
  68. {
  69. super(0,1);
  70. whole = w;
  71.  
  72. //num = 0;
  73. //den = 1;
  74.  
  75. }
  76.  
  77.  
  78. public mixedFraction (int n, int d)
  79. {
  80. //super(n,d);
  81. whole = 0;
  82.  
  83. num = n;
  84.  
  85. if (d != 0)
  86. den = d;
  87.  
  88. else
  89. throw new IllegalArgumentException("Fraction cannot have 0 as denominator");
  90.  
  91. if (num < 0 && den < 0)
  92. {
  93. num = -num;
  94. den = -den;
  95. }
  96. int x = super.gcf(num,den);
  97. num = num/x;
  98. den = den/x;
  99.  
  100. if (den > 0)
  101. {
  102. while(num >= den)
  103. {
  104. whole++;
  105. num=num-den;
  106. }
  107. }
  108.  
  109.  
  110. else if (den < 0)
  111. {
  112. while (-num <= den)
  113. {
  114. whole--;
  115. num=num+den;
  116. }
  117. }
  118. else
  119. throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
  120. }
  121.  
  122. /*private int gcf(int a, int b)
  123. {
  124.  
  125.  
  126.  
  127. int d, e;
  128. e=a;
  129. d=b;
  130.  
  131. if (a<0)
  132. e=-a;
  133. if (b<0)
  134. d=-b;
  135. if (a == 0 || b == 0)
  136. return 1;
  137.  
  138.  
  139.  
  140. while (e!=d)
  141. {if (e>d)
  142. e=e-d;
  143. else
  144. d=d-e;
  145. }
  146. return d;
  147. }*/
  148.  
  149. public mixedFraction (mixedFraction n)
  150. {
  151. //super(n);
  152. whole = n.whole;
  153.  
  154. num = n.num; // pulling num on n > putting into num
  155. den = n.den;
  156.  
  157. if (num < 0 && den < 0)
  158. {
  159. num = -num;
  160. den = -den;
  161. }
  162.  
  163. if (den > 0)
  164. {
  165. while(num >= den)
  166. {
  167. whole++;
  168. num=num-den;
  169. }
  170. }
  171.  
  172.  
  173. else if (den < 0)
  174. {
  175. while (-num <= den)
  176. {
  177. whole--;
  178. num=num+den;
  179. }
  180. }
  181. else
  182. throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
  183.  
  184. }
  185.  
  186. public mixedFraction mixedfractionAdd (mixedFraction a)
  187. {
  188. //super.fractionAdd(a);
  189. int newnum;
  190. int newden;
  191. newnum = (den * whole) + num;
  192. a.num = (a.den * a.whole) + a.num;
  193. int newwhole = whole;
  194. newwhole = 0;
  195. a.whole = 0;
  196.  
  197. int newernum;
  198. int newerden;
  199. newernum = (newnum * a.den) + (a.num * den);
  200. newerden = den * a.den;
  201. if (newernum <0 && den <0)
  202. {
  203. newernum = -newernum;
  204. newerden = -newerden;
  205. }
  206.  
  207. return new mixedFraction(newwhole, newernum, newerden);
  208.  
  209. }
  210.  
  211. public mixedFraction mixedfractionSubtract (mixedFraction a)
  212. {
  213. //super.fractionAdd(a);
  214. int newnum;
  215. int newden;
  216. newnum = (den * whole) + num;
  217. a.num = (a.den * a.whole) + a.num;
  218. int newwhole = whole;
  219. newwhole = 0;
  220. a.whole = 0;
  221.  
  222. int newernum;
  223. int newerden;
  224. newernum = (newnum * a.den) - (a.num * den);
  225. newerden = den * a.den;
  226. if (newernum <0 && den <0)
  227. {
  228. newernum = -newernum;
  229. newerden = -newerden;
  230. }
  231.  
  232. return new mixedFraction(newwhole, newernum, newerden);
  233.  
  234. }
  235.  
  236. public mixedFraction mixedfractionMultiply (mixedFraction a)
  237. {
  238. //super.fractionAdd(a);
  239. int newnum;
  240. int newden;
  241. newnum = (den * whole) + num;
  242. a.num = (a.den * a.whole) + a.num;
  243. int newwhole = whole;
  244. newwhole = 0;
  245. a.whole = 0;
  246.  
  247. int newernum;
  248. int newerden;
  249. newernum = newnum * a.num;
  250. newerden = den * a.den;
  251. if (newernum <0 && den <0)
  252. {
  253. newernum = -newernum;
  254. newerden = -newerden;
  255. }
  256.  
  257. return new mixedFraction(newwhole, newernum, newerden);
  258.  
  259. }
  260.  
  261. public mixedFraction mixedfractionDivide (mixedFraction a)
  262. {
  263. //super.fractionAdd(a);
  264. int newnum;
  265. int newden;
  266. newnum = (den * whole) + num;
  267. a.num = (a.den * a.whole) + a.num;
  268. int newwhole = whole;
  269. newwhole = 0;
  270. a.whole = 0;
  271.  
  272. int newernum;
  273. int newerden;
  274. if (a.num!=0)
  275. {
  276. newernum = newnum * a.den;
  277. newerden = den * a.num;
  278. if (newernum <0 && den <0)
  279. {
  280. newernum = -newernum;
  281. newerden = -newerden;
  282. }
  283. }
  284. else
  285. throw new IllegalArgumentException("Fraction cannot have 0 as denuminator");
  286. return new mixedFraction(newwhole, newernum, newerden);
  287.  
  288. }
  289.  
  290. public void mixedfractionPrint()
  291. {
  292. if (whole == 0 && num == 0)
  293. System.out.println(0);
  294. else if (whole != 0 && num == 0)
  295. System.out.println(whole);
  296. else if (whole == 0)
  297. System.out.println(num +"/"+ den);
  298. else
  299. System.out.println(whole +" "+ num +"/"+ den);
  300. }
  301.  
  302.  
  303.  
  304.  
  305. }
Add Comment
Please, Sign In to add comment