aboutsummaryrefslogtreecommitdiff
path: root/Week7/src/polynomial/Polynomial.java
diff options
context:
space:
mode:
authorCamil Staps2015-03-17 18:45:26 +0100
committerCamil Staps2015-03-17 18:45:26 +0100
commit4e7d3754b69f6af8f84622a17d28103ce70021d1 (patch)
tree0692608903feb6111eafe8a8583795c7b82ae847 /Week7/src/polynomial/Polynomial.java
parentWeek 7 framework + startzip (diff)
Implementation with limited tests; no javadoc yet
Diffstat (limited to 'Week7/src/polynomial/Polynomial.java')
-rw-r--r--Week7/src/polynomial/Polynomial.java62
1 files changed, 58 insertions, 4 deletions
diff --git a/Week7/src/polynomial/Polynomial.java b/Week7/src/polynomial/Polynomial.java
index 3b327f4..2a1b28e 100644
--- a/Week7/src/polynomial/Polynomial.java
+++ b/Week7/src/polynomial/Polynomial.java
@@ -1,6 +1,7 @@
package polynomial;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
@@ -61,18 +62,47 @@ public class Polynomial {
*/
@Override
public String toString() {
- return null;
+ StringBuilder sb = new StringBuilder();
+ boolean not_first = false;
+ for (Term t : terms) {
+ if (not_first && t.getCoef() >= 0)
+ sb.append("+");
+ sb.append(t);
+ not_first = true;
+ }
+ return sb.toString();
}
public void plus(Polynomial b) {
+ for (Term t : b.terms)
+ plus(t);
+ }
+
+ public void plus(Term t) {
+ Iterator<Term> iter = terms.iterator();
+ while (iter.hasNext()) {
+ Term this_t = iter.next();
+ if (this_t.getExp() == t.getExp()) {
+ this_t.plus(t);
+ if (this_t.getCoef() == 0)
+ iter.remove();
+ return;
+ }
+ }
+ terms.add(t);
}
-
public void minus(Polynomial b) {
+ b.times(new Polynomial("-1 0"));
+ plus(b);
}
-
public void times(Polynomial b) {
+ Polynomial result = new Polynomial();
+ for (Term that_t : b.terms)
+ for (Term this_t : terms)
+ result.plus(new Polynomial((that_t.getCoef() * this_t.getCoef()) + " " + (that_t.getExp() + this_t.getExp())));
+ terms = result.terms;
}
public void divide(Polynomial b) {
@@ -80,7 +110,31 @@ public class Polynomial {
@Override
public boolean equals(Object other_poly) {
- return false;
+ Polynomial that = (Polynomial) other_poly;
+ if (terms.size() != that.terms.size())
+ return false;
+ for (Term this_t : terms) {
+ Iterator<Term> that_iter = that.terms.iterator();
+ boolean found = false;
+ while (that_iter.hasNext()) {
+ if (this_t.equals(that_iter.next())) {
+ found = true;
+ that_iter.remove();
+ break;
+ }
+ }
+ if (!found) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public double apply(double x) {
+ double result = 0;
+ for (Term t : terms)
+ result += t.apply(x);
+ return result;
}
}