/*다항식의 차 subPoly()와 다항식의 곱 multyPoly()
* 메소드를 OperatePoly 클래스에 추가하였습니다.*/
public class poly {
public static void main(String args[]) {
float a[] = new float[] {1, 3, 4, 3, 5, 3};
float b[] = new float[] {2, 1, 3, 1, 0, 5, 6};
int size_a, size_b;
size_a = 5; //size_a = a.length;
size_b = 6; //size_b = b.length;
Polynomial A = new Polynomial(size_a, a);
Polynomial B = new Polynomial(size_b, b);
OperatePoly optPoly = new OperatePoly();
Polynomial C = optPoly.addPoly(A, B);
Polynomial D = optPoly.subPoly(A, B);
Polynomial E = optPoly.multyPoly(A, B);
System.out.printf("첫번째 다항식 - A(x) = "); A.printPoly();
System.out.printf("두번째 다항식 - B(x) = "); B.printPoly();
System.out.printf("두 다항식의 합 - C(x) = "); C.printPoly();
System.out.printf("두 다항식의 차 - D(x) = "); D.printPoly();
System.out.printf("두 다항식의 곱 - E(x) = "); E.printPoly();
}
}
class Polynomial{
private int degree;
private float coef[] = new float[20];
Polynomial (int degree, float coef[]) {
this.degree = degree;
this.coef = coef;
}
Polynomial (int degree) {
this.degree = degree;
for (int i=0; i<=degree; i++) {
this.coef[i] = 0;
}
}
public int getDegree() {
return this.degree;
}
public float getCoef(int i) {
return this.coef[i];
}
public float setCoef(int i, float coef) {
return this.coef[i] = coef;
}
public void printPoly() {
int temp = this.degree;
for (int i=0; i <= this.degree; i++) {
if (this.coef[i] >= 0)
System.out.printf("%3.0fx^%d", this.coef[i], temp--);
else if (this.coef[i] < 0)
System.out.printf("(%3.0f)x^%d", this.coef[i], temp--);
if (i != this.degree) {
System.out.printf(" +");
}
}
System.out.println();
}
}
class OperatePoly {
private int degree_A = 0, degree_B = 0, degree_C = 0;
private int index_A = 0, index_B = 0, index_C = 0;
private int expo_A, expo_B;
//private float coef_A, coef_B, coef_C;
/* 덧셈메소드 */
public Polynomial addPoly(Polynomial A , Polynomial B) {
degree_A = A.getDegree();
degree_B = B.getDegree();
index_A = 0; index_B = 0; index_C = 0;
expo_A = degree_A;
expo_B = degree_B;
if (degree_A >= degree_B)
degree_C = degree_A;
else
degree_C = degree_B;
Polynomial C = new Polynomial(degree_C);
while(index_A <= degree_A && index_B <= degree_B) {
if (expo_A > expo_B) {
C.setCoef(index_C++, A.getCoef(index_A++));
expo_A--;
} else if (expo_A == expo_B){
C.setCoef(index_C++, A.getCoef(index_A++)+B.getCoef(index_B++));
expo_A--;
expo_B--;
} else {
C.setCoef(index_C++, B.getCoef(index_B++));
expo_B--;
}
}
return C;
}
/* 뺼셈 멧소드*/
public Polynomial subPoly(Polynomial A , Polynomial B) {
degree_A = A.getDegree();
degree_B = B.getDegree();
index_A = 0; index_B = 0; index_C = 0;
expo_A = degree_A;
expo_B = degree_B;
if (degree_A >= degree_B)
degree_C = degree_A;
else
degree_C = degree_B;
Polynomial C = new Polynomial(degree_C);
while(index_A <= degree_A && index_B <= degree_B) {
if (expo_A > expo_B) {
C.setCoef(index_C++, A.getCoef(index_A++));
expo_A--;
} else if (expo_A == expo_B){
C.setCoef(index_C++, A.getCoef(index_A++)-B.getCoef(index_B++));
expo_A--;
expo_B--;
} else {
C.setCoef(index_C++, B.getCoef(index_B++));
expo_B--;
}
}
return C;
}
/*곱셈 메소드*/
public Polynomial multyPoly(Polynomial A , Polynomial B) {
degree_A = A.getDegree();
degree_B = B.getDegree();
index_A = 0; index_B = 0; index_C = 0;
expo_A = degree_A;
expo_B = degree_B;
if (degree_A >= degree_B)
degree_C = degree_A;
else
degree_C = degree_B;
Polynomial C = new Polynomial(degree_C);
while(index_A <= degree_A && index_B <= degree_B) {
if (expo_A > expo_B) {
C.setCoef(index_C++, A.getCoef(index_A++));
expo_A--;
} else if (expo_A == expo_B){
C.setCoef(index_C++, A.getCoef(index_A++)*B.getCoef(index_B++));
expo_A--;
expo_B--;
} else {
C.setCoef(index_C++, B.getCoef(index_B++));
expo_B--;
}
}
return C;
}
}
자바로 다항식 계산하는 소스인데요..
중간에
class Polynomial{
private int degree;
private float coef[] = new float[20];
Polynomial (int degree, float coef[]) {
this.degree = degree;
this.coef = coef;
}
Polynomial (int degree) {
this.degree = degree;
for (int i=0; i<=degree; i++) {
this.coef[i] = 0;
}
}
public int getDegree() {
return this.degree;
}
public float getCoef(int i) {
return this.coef[i];
}
public float setCoef(int i, float coef) {
return this.coef[i] = coef;
}
public void printPoly() {
int temp = this.degree;
for (int i=0; i <= this.degree; i++) {
if (this.coef[i] >= 0)
System.out.printf("%3.0fx^%d", this.coef[i], temp--);
else if (this.coef[i] < 0)
System.out.printf("(%3.0f)x^%d", this.coef[i], temp--);
if (i != this.degree) {
System.out.printf(" +");
}
}
System.out.println();
}
}
class OperatePoly {
private int degree_A = 0, degree_B = 0, degree_C = 0;
private int index_A = 0, index_B = 0, index_C = 0;
private int expo_A, expo_B;
//private float coef_A, coef_B, coef_C;
요 부분이 잘 이해가 안됩니다 ㅠㅠ
주석이나 간단한 설명 부탁드려도 될까요,,?
ㅠㅠ 확실히 여자는 이공계는 안되나보네요 ㅠ
여자라 이공계가 안된다기보다는 정확히 어떤부분이 이해가안된다고써주심히.. 생성자가이해가안된다는것인지
아아 죄송합니다 ㅜ ㅜ 네 저부분 차수와 변수지정하는부분을 잘모르겠네요 제가 열심히 안하고 탓했네요 죄송합니다
3줄요약점