实验:多项式乘法问题

实验目的:设计一个一元稀疏多项式简单计算器。

实验内容与要求   一元稀疏多项式简单计算器的基本功能是:   (1)输入并建立多项式;   (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,...,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列。   (3)多项式a与多项式b相乘,建立多项式。

#include<iostream>
using namespace std;

int init(int* num,int len);
void mu(int* num,int* num2,int* num3,int a1,int a2,int len);

int main()
{
	int n,i,j,a1,a2;
	int num[30]={0},num2[30]={0},num3[30]={0}; 
	a1=init(num,30);
	a2=init(num2,30);//传回最高位
	mu(num,num2,num3,a1,a2,30);//相乘运算 
} 

int init(int* num,int len)
{
	int n,i,c,c1,c2,tmp=0;
	cout<<"请输入多项式"<<endl<<"n:";
	cin>>n;
	for(i=0;i<n;i++) 
	{
		cin>>c1>>c;
		tmp=(tmp>c)?tmp:c;
		num[c]=c1;
	}
	c2=tmp;
	
	cout<<"多项式为:";
	if(num[c2]!=1)
		cout<<num[c2];
	if(c2!=1)
	{
		cout<<"x^"<<c2;
	}
	else
	{
		cout<<"x";
	}
	
	for(c2--;c2>=0;c2--)
	{
		if(num[c2])
		{
			cout<<"+";
			if(num[c2]!=1)
				cout<<num[c2];
			if(c2!=1&&c2!=0)
			{
				cout<<"x^"<<c2;
			}
			else if(c2==1)
			{
				cout<<"x";
			}
		}
	}
	cout<<endl;
	return tmp;
}

void mu(int* num,int* num2,int* num3,int a1,int a2,int len)
{
	cout<<endl<<"相乘结果为:";

	int tmp=0;
	for(int i=0;i<=a1;i++)
	{
		if(num[i]==0) continue;
		for(int j=0;j<=a2;j++)
		{
			if(num2[j]==0) continue;
			tmp=(tmp>(i+j))?tmp:(i+j);
			num3[i+j]+=num[i]*num2[j];
		}
	}
	
	
	if(num3[tmp]!=1)
		cout<<num3[tmp];
	if(num3[tmp]==1)
	{
		cout<<"x";
	}
	else 
	{
		cout<<"x^"<<tmp;
	}
	for(tmp--;tmp>=0;tmp--)
	{
		if(num3[tmp])
		{
			cout<<"+";
			if(num3[tmp]!=1)
				cout<<num3[tmp];
			if(tmp!=1&&tmp!=0)
			{
				cout<<"x^"<<tmp;
			}
			else if(tmp==1)
			{
				cout<<"x";
			}
			
		}
	}

} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值