Chương trình: cộng, nhân hai đa thức


Mã:
#include "conio.h"
#include "stdio.h"
#include "iostream.h"
#define max 101
/*Nhap da thuc*/
void Nhap(float A[], int n) {
	for(int i= 0; i<=n; i++) {
		cout<<"a"<<i<<" = ";
		cin>>A[i];
	}
}
/*Xuat da thuc*/
void Xuat(float A[],int n, char*s) {
	cout<<s<<" = "<<A[0];
	for(int i=1; i<=n; i++){
		if(A[i]>0)
			cout<<"+"<<A[i]<<"x^"<<i;
		if(A[i]<0)
			cout<<A[i]<<"x^"<<i;
	}
}
/*P(x)+Q(x)*/
void Cong(float A[],int n,float B[],int m,float C[],int &h){
	if(n>m){
		h=n;
		for(int i=0;i<=m;i++)
			C[i]=A[i]+B[i];
		for(i=m+1;i<=n;i++)
			C[i]=A[i];
	}else {
		h=m;
		for(int i=0;i<=n;i++)
			C[i]=A[i]+B[i];
		for(i=n+1;i<=m;i++)
			C[i]=B[i];
	}
}
/*Q(x)=P(x)*bx^m*/
void NhanDonThuc(float A[],int n,float c,int m, float B[], int &h){
	h = n+m;
	for(int i=0;i<m;i++)
		B[i] = 0;
	for(i=m;i<=n+m;i++)
		B[i] = c*A[i-m];
}
/*H(x)=P(x)+Q(x)*/
void NhanDaThuc(float A[], int n, float B[], int m, float C[], int &h) {
	float temp[max];
	int k;
	NhanDonThuc(B,m,A[0],0,C,h);
	for(int i = 1; i<=n; i++) {
	      NhanDonThuc(B,m,A[i],i,temp,k);
	      Cong(C,h,temp,k,C,h);
	}
}

/*Chuong Trinh Chinh*/
void main(){
	float A[max],B[max],C[max],D[max];
	int n,m,h;
	clrscr();
	cout<<"\nNhap vao bac cua da thuc P(x), n = ";
	cin>>n;
	Nhap(A,n);
	Xuat(A,n,"P(x)");
	cout<<"\nNhap vao bac cua da thuc Q(x), m = ";
	cin>>m;
	Nhap(B,m);
	Xuat(B,m,"Q(x)");
	cout<<"\nH(x) = P(x) + Q(x)\n";
	Cong(A,n,B,m,C,h);
	Xuat(C,h,"    ");
	cout<<"\nH(x) = P(x)*Q(x)\n";
	NhanDaThuc(A,n,B,m,D,h);
	Xuat(D,h,"    ");
	getch();
}