PolyAdd
Retired DISLab
import acm.program.ConsoleProgram; class Polynomial { public Polynomial(int degree, float[] coef) { this.degree = degree; this.coef = coef; } public Polynomial() { degree = 0; } Polynomial add(Polynomial poly) { float[] coefArr = new float[this.coef.length + poly.coef.length]; Polynomial c = new Polynomial(); int Apos = 0, Bpos = 0, Cpos = 0; int degree_a = this.degree; int degree_b = poly.degree; while( Apos <= this.degree && Bpos <= poly.degree) { if (degree_a > degree_b) { coefArr[Cpos++] = this.coef[Apos++]; degree_a--; } else if (degree_a == degree_b) { coefArr[Cpos++] = this.coef[Apos++] + poly.coef[Bpos++]; degree_a--; degree_b--; } else { coefArr[Cpos++] = poly.coef[Bpos++]; degree_b--; } c.degree++; } c.coef = coefArr; return c; } private int degree; private float[] coef; } public class PolyAdd extends ConsoleProgram { public void run() { float arr1[] = {3, 6, 0, 0, 0, 10}; float arr2[] = {7, 0, 5, 0, 1}; Polynomial a = new Polynomial(5, arr1); Polynomial b = new Polynomial(4, arr2); Polynomial c; c = a.add(b); println(c); } private static final long serialVersionUID = 1; }