#include <stdio.h>
#define MAX(a,b) (a>b)?a:b //a가 b보다 큰가요? 그렇다면 a, 아니면 b
#define MAX_DEGREE 101
typedef struct{ //다항식 구조체 타입 선언
int degree; //다항식의 차수
float coef[MAX_DEGREE]; //다항식의 계수
}polynomial;
polynomial poly_add1(polynomial A, polynomial B){
polynomial C;
int Apos = 0, Bpos = 0, Cpos = 0;
int degree_a = A.degree;
int degree_b = B.degree;
C.degree = MAX(A.degree,B.degree);
while(Apos <= A.degree && Bpos <= B.degree){
if (degree_a > degree_b){
C.coef[Cpos++] = A.coef[Apos++];
degree_a--;
}
else if (degree_a < degree_b){
C.coef[Cpos++] = B.coef[Bpos++];
degree_b--;
}
else{
C.coef[Cpos++] = A.coef[Apos++] + B.coef[Bpos++];
degree_a--; degree_b--;
}
}
return C;
}
void print_poly(polynomial p1){
for(int i=p1.degree;i>0;i--)
printf("%3.lfx^%d + ",p1.coef[p1.degree - i], i);
printf("%.3lf \n",p1.coef[p1.degree]);
}
void print_answer_poly(polynomial p2){
for(int i=p2.degree;i>0;i--){
if(p2.coef[p2.degree - i] != 0)
printf("%3.lfx^%d + ",p2.coef[p2.degree - i], i);
}
printf("%.3lf \n",p2.coef[p2.degree]);
}
int main(void) {
polynomial a = {5, {3, 6, 0, 0, 0, 10}};
polynomial b = {4, {7,0,5,0,1} };
polynomial c;
print_poly(a);
print_poly(b);
c = poly_add1(a,b);
printf("--------------------------------------------------------------------\n");
print_answer_poly(c);
return 0;
}