다항식의 곱셈
#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;
}