Naloga/Programiranje/Objektno programiranje/Razred Ulomek/Rešitev (Java)

Iz MaFiRaWiki

  1.  
  2. public class Ulomek {
  3. int a;
  4. int b;
  5. //Konstruktorja
  6. public Ulomek(int x, int y) {
  7. if ((y<0 && x<0) || (y<0 && x>0)) {
  8. a=-x;
  9. b=-y;
  10. }
  11. else {
  12. a=x;
  13. b=y;
  14. }
  15. }
  16. public Ulomek(int x) {
  17. a=x;
  18. b=1;
  19. }
  20.  
  21. //metode
  22. public String toString() {
  23. if (b==1) return Integer.toString(a);
  24. else return a+"/"+b;
  25. }
  26.  
  27. public static int gcd(int x, int y) {
  28. int temp;
  29. while (x%y!=0) {
  30. temp=x;
  31. x=y;
  32. y=temp%y;
  33. }
  34. return y;
  35. }
  36.  
  37. public static int abs(int x) {
  38. return (x<0) ? -x : x;
  39. }
  40.  
  41. public void okrajsaj() {
  42. int A = abs(a);
  43. int sign = (a<0) ? -1 : 1;
  44. if (A==0 || b==0) return;
  45. int D = gcd(A,b);
  46. if (D==1) return;
  47. while (A%D==0 && b%D==0) {
  48. A/=D;
  49. b/=D;
  50. }
  51. if (sign==1) a=A;
  52. else a=-A;
  53. }
  54.  
  55. public int compareTo(Ulomek p) {
  56. if (p.b==0 || b==0) {
  57. System.err.println("error: deljenje z nic.");
  58. }
  59. double P = (1.0*p.a)/p.b;
  60. double T = (1.0*a)/b;
  61. if (P>T) return 1;
  62. else if (P<T) return -1;
  63. else return 0;
  64. }
  65.  
  66. public void equals(Ulomek p) {
  67. a=p.a;
  68. b=p.b;
  69. }
  70.  
  71. public void pristej(Ulomek p) {
  72. if (p.b==0 || b==0) {
  73. System.err.println("error: deljenje z nic.");
  74. }
  75. a=a*p.b+b*p.a;
  76. b*=p.b;
  77. this.okrajsaj();
  78. }
  79.  
  80. public Ulomek vsota(Ulomek p) {
  81. if (p.b==0 || b==0) {
  82. System.err.println("error: deljenje z nic.");
  83. }
  84. Ulomek tmp = new Ulomek (a*p.b+b*p.a , b*p.b);
  85. tmp.okrajsaj();
  86.  
  87. return tmp;
  88. }
  89.  
  90. public void odstej(Ulomek p) {
  91. if (p.b==0 || b==0) {
  92. System.err.println("error: deljenje z nic.");
  93. }
  94. a=a*p.b-b*p.a;
  95. b=b*p.b;
  96. this.okrajsaj();
  97. }
  98.  
  99. public Ulomek razlika(Ulomek p) {
  100. if (p.b==0 || b==0) {
  101. System.err.println("error: deljenje z nic.");
  102. }
  103. Ulomek tmp = new Ulomek (a*p.b-b*p.a,b*p.b);
  104. tmp.okrajsaj();
  105.  
  106. return tmp;
  107. }
  108.  
  109. public void pomnozi(Ulomek p) {
  110. if (p.b==0 || b==0) {
  111. System.err.println("error: deljenje z nic.");
  112. }
  113. a*=p.a;
  114. b*=p.b;
  115. this.okrajsaj();
  116. }
  117.  
  118. public Ulomek zmnozek(Ulomek p) {
  119. if (p.b==0 || b==0) {
  120. System.err.println("error: deljenje z nic.");
  121. }
  122. Ulomek tmp = new Ulomek (a*p.a,b*p.b);
  123. tmp.okrajsaj();
  124.  
  125. return tmp;
  126. }
  127.  
  128. public void deli(Ulomek p) {
  129. Ulomek temp = new Ulomek (1,1);
  130. temp.equals(p);
  131. int tmp=temp.b;
  132. temp.b=temp.a;
  133. temp.a=tmp;
  134. this.pomnozi(temp);
  135. }
  136.  
  137. public Ulomek kvocient(Ulomek p) {
  138. Ulomek tmp = new Ulomek (a,b);
  139. tmp.deli(p);
  140. return tmp;
  141. }
  142. }
Osebna orodja