Quick actions

cmd+k|ctrl+k

Navigation

Languages

다항식의 계산 첫번째 방법 답 출력 변형(0인 항 삭제)

Snippet info

Language

C

Visibility

public

Author

hoitzza

Created

2023-09-07T13:35:21.987498Z

Updated

2023-09-07T13:35:21.987498Z

#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;
}
INFO