c·c++/c++ 프로그래밍

다항식의 곱셈

바로이순간 2012. 9. 24. 20:23

#include <iostream>

using namespace std;

void showPoly(double p[], int deg) {

    int i;

    i=deg;

    if(i>0) {

        cout<<p[i]<<"x^"<<i;

    }

    i=i-1;

    while(i>=0) {

        if(p[i]>0) cout<<"+"<<p[i]<<"x^"<<i;

        else if(p[i]<0) cout<<p[i]<<"x^"<<i;

        i=i-1;

    }

    cout<<endl;

}


void addPoly(double p1[], int p1deg, double p2[], int p2deg, double p3[], int *p3deg) {

    int i, n;

    n=p1deg;

    if(p2deg>n) n=p2deg;

    *p3deg=n;

    for(i=0;i<n+1;++i) p3[i]=p1[i]+p2[i];

}


void multPoly(double p1[], int p1deg, double p2[], int p2deg, double p3[], int *p3deg) {

    int i, j;

    *p3deg=p1deg+p2deg;

    for(i=0;i<*p3deg+1;++i) p3[i]=0;


    for(i=0;i<p1deg+1;++i) {

        for(j=0;j<p2deg+1;++j) {

            p3[i+j]=p3[i+j]+p1[i]*p2[j];

        }

    }

}

int main() {

    int i, j, n, deg;

    double coef;

    int poly1deg=0, poly2deg=0, poly3deg=0;

    double poly1[100];

    double poly2[100];

    double poly3[100];


    cout<<"다항식 A의 항의 수 : ";

    cin>>n;

    for(i=0;i<n;++i) {

        cout<<i+1<<"번째 항의 계수와 지수: ";        

        cin>>coef>>deg;

        poly1[deg]=coef;

        if(deg>poly1deg) poly1deg=deg;

    }


    cout<<"다항식 B의 항의 수 : ";

    cin>>n;

    for(i=0;i<n;++i) {

        cout<<i+1<<"번째 항의 계수와 지수: ";        

        cin>>coef>>deg;

        poly2[deg]=coef;

        if(deg>poly2deg) poly2deg=deg;

    }


    cout<<"입력된 다항식 A : ";

    showPoly(poly1, poly1deg);    

    cout<<"입력된 다항식 B : ";

    showPoly(poly2, poly2deg);


    multPoly(poly1, poly1deg, poly2, poly2deg, poly3, &poly3deg);

    cout<<"다항식 A * 다항식 B : ";

    showPoly(poly3, poly3deg);        


    return 0;

}

'c·c++ > c++ 프로그래밍' 카테고리의 다른 글

complex number class (복수수 클래스)  (0) 2012.12.08
스택 클래스  (0) 2012.11.05
조건을 가진 확률분포  (0) 2012.09.16
cin.getline 입력  (0) 2012.09.16
동적할당을 이용한 무한자리수 덧셈  (0) 2012.09.14