다항식 덧샘
다항식 덧샘
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;
}
}