Hi.seo 2017. 6. 1. 20:43

다항식 덧샘


package algorithmAndData;



public class OperatePoly {

    public Polynomial addPoly(Polynomial A, Polynomial B){

    Polynomial C = null;

    int exp_A, exp_B,  exp_C, coef_A, coef_B,  coef_C, index_A=0, index_B=0, index_C=0;

    int degree_A, degree_B;

        exp_A = A.getExp();

        exp_B = B.getExp();

        degree_A= exp_A;

        degree_B= exp_B;

         

        if(exp_A >= exp_B) exp_C=exp_A;

        else exp_C=exp_B;

        

        C = new Polynomial(exp_C);

        

        while(index_A <= exp_A && index_B <= exp_B){

             if(degree_A > degree_B){

                 C.setCoef(index_C++, A.getCoef(index_A++));

                 degree_A--;

             }

             else if(degree_A == degree_B){

                 C.setCoef(index_C++, A.getCoef(index_A++)+B.getCoef(index_B++));

                 degree_A--; degree_B--;

             } 

             else {

                 C.setCoef(index_C++, B.getCoef(index_B++));

                 degree_B--;

             } 

        }

       return C;

     

    }

    

    public static void main(String[] args) {

    int a[]= new int[] {4,3,5,0};

        int b[]= new int[] {3,1,0,2,1};

        Polynomial A = new Polynomial(3, a);

        Polynomial B = new Polynomial(4, b);

        OperatePoly optPoly = new OperatePoly();

        Polynomial C = optPoly.addPoly(A,B);

        System.out.printf("A(x)="); A.printPoly();

        System.out.printf("B(x)="); B.printPoly();

        System.out.printf("C(x)="); C.printPoly();

}


---------------------------------------------------------------------------------

class Polynomial {

private int[] coef;

private int exp;


public Polynomial(int exp, int[] coef) {

super();

this.coef = coef;

this.exp = exp;

}


Polynomial(int exp) {

this.exp = exp;

coef = new int[exp+1];

// for (int i = 0; i <= exp; i++)

// this.coef[i] = 0;

}


// public int[] getCoef() {

// return coef;

// }

//

// public void setCoef(int[] coef) {

// this.coef = coef;

// }

public int getCoef(int i) {

return coef[i];

}

public void setCoef(int i, int a) {

this.coef[i] = a;

}


public void printPoly() {

int temp = this.exp;

for (int i = 0; i <= this.exp; i++) {

System.out.printf("%3dx^%d", this.coef[i], temp--);

}

System.out.println();

}

public int getExp() {

return exp;

}


public void setExp(int exp) {

this.exp = exp;

}


}