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

Iz MaFiRaWiki

  1.  
  2. public class Polinom {
  3. int st;
  4. Ulomek[] p;
  5.  
  6. private Ulomek N = new Ulomek (0);
  7.  
  8. //Konstruktorji
  9. public Polinom (int n, Ulomek[] a) {
  10. st=n;
  11. p=new Ulomek [st+1];
  12. if (st>=0) for (int i=0;i<=st;i++) p[i]=a[i];
  13. }
  14.  
  15. public Polinom (int n) {
  16. st=n;
  17. p=new Ulomek [st+1];
  18. }
  19.  
  20. public Polinom () {
  21. st=-1;
  22. }
  23.  
  24. //metode
  25. public int stopnja() {
  26. return st;
  27. }
  28.  
  29. public Ulomek vrednost(Ulomek a) {
  30. int n=st;
  31. Ulomek tmp = p[n];
  32.  
  33. for (int i= n-1;i>=0;i--) {
  34. tmp=p[i].vsota(a.zmnozek(tmp));
  35. }
  36. tmp.okrajsaj();
  37.  
  38. return tmp;
  39. }
  40.  
  41. public boolean equals(Polinom q) {
  42. if (st!=q.st) return false;
  43. for (int i=0;i<=st;i++) {
  44. if (!p[i].equals(q.p[i])) return false;
  45. }
  46. return true;
  47. }
  48.  
  49. private void shiftleft() {
  50. for (int i=0;i<=st;i++) {
  51. p[i]=p[i+1];
  52. }
  53. p[st]=N;
  54. }
  55.  
  56. public Polinom vsota(Polinom q) {
  57. int m = Math.min(st,q.st);
  58. int M = Math.max(st,q.st);
  59.  
  60. Polinom s = new Polinom(M);
  61.  
  62. int i;
  63. for (i=0;i<=m;i++)
  64. s.p[i]=p[i].vsota(q.p[i]);
  65.  
  66. for (int j=i+1;j<=M;j++) {
  67. if (M==st) {
  68. s.p[j]=p[j];
  69. }
  70. else s.p[j]=q.p[j];
  71. }
  72. for (int j=0;s.p[j].equals(N);j++) {
  73. s.shiftleft();
  74. s.st--;
  75. }
  76. return s;
  77. }
  78.  
  79. public Polinom zmnozek(Polinom q) {
  80. int n = st+q.st;
  81. Polinom s = new Polinom (n);
  82. for (int k=0;k<=n;k++) {
  83. Ulomek vs = new Ulomek(0);
  84. for (int i=0;i<=k;i++) {
  85. if (i<=st && (k-i)<=q.st)
  86. vs.pristej( p[i].zmnozek(q.p[k-i]) );
  87. }
  88. s.p[k]=vs;
  89. }
  90.  
  91. return s;
  92. }
  93.  
  94. public String toString() {
  95. if (st<0) return "0";
  96. else if (st==0) return p[0].toString();
  97. else {
  98. String res = (p[0]!=null) ? p[0].toString() : "";
  99. if (p[0]!=null && (st>0 && !p[0].equals(N))) res+=" + ";
  100.  
  101. res+=(p[1]!=null) ? p[1].toString()+" x" : "";
  102. if (p[1]!=null && (st>1 && !p[1].equals(N))) res+=" + ";
  103.  
  104. for (int i=2;i<=st;i++) {
  105. if (p[i]==null || p[i].equals(N)) continue;
  106. res+=p[i].toString()+" x^("+i+")";
  107. if (i<st) res+=" + ";
  108. }
  109.  
  110. boolean pogoj=true;
  111. for (int i=0;i<=st;i++) if (p[i]!=null) pogoj=false;
  112. if (pogoj) return null;
  113. return res;
  114. }
  115. }
  116.  
  117. }
Osebna orodja