⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 数据结构及C++相关的一些小程序
💻 CPP
字号:
#include"iostream.h"
#include"math.h"
#include"linkedlist.h"
#include"swap.cpp"

/*以下函数根据链表的内容和x的值,求出多项式的具体值*/
double poly(LinkedList & f, double x)
{
	double a=0;//a是累加器
	Term *temp=f.head;//将临时指针指向头节点
	while(temp!=NULL)
	{
		a=a+(temp->coeff)*pow(x,temp->power);//将每一个节点的单项式的值累加
		temp=temp->next;//临时指针后移
	}
	return a;	//返回累加器的值
}


/*主函数完成了多项式内容的自由输入,根据输入的内容按照幂次先排好序,
建立相应的单向链表,以及根据输入的x的值再调用相关函数求值*/
void main()
{
	Term a[100];//该数组用于存取依次输入的各个单项式的系数和幂次
	int i=0;
    cout<<"以“系数 幂次”对的形式(每输入一对按回车,注意不同的两对幂次不能相同,幂次为整数)输入一个多项式,在输入的幂次为0时终止输入:"<<endl;
	while(1)
	{
		cin>>(a+i)->coeff>>(a+i)->power;//存入数组
		if((a+i)->power==0)break;//幂次为0时跳出循环,停止输入,
		//否则继续输入一个单项式再判断是否结束
		else i++;
	}
	int count=i+1;//多项式中包含的单项式的个数
	
	
	/*以下是对数组按照每个元素中的幂次进行排序的具体实现,排序后幂次是按照升序排列的*/
	int smallIndex;
	int j;
	for(i=0;i<count-1;i++)
	{
		smallIndex=i;
		for(j=i+1;j<count;j++)
			if((a+j)->power<(a+smallIndex)->power)
				smallIndex=j;
		Swap(a[i],a[smallIndex]);//调用交换函数
	}


	
	LinkedList list((a+count-1)->coeff,(a+count-1)->power);
	//数组中有效元素的最后一个,也就是幂次最大的一个,对链表进行初始化,即赋相应的值给头节点

	for(j=count-2;j>=0;j--)//让数组倒着依次把每个元素追加到链表的尾部,这样链表中的幂次是降序
		list.push_back((a+j)->coeff,(a+j)->power);

	list.display();//显示该多项式的内容

	
    /*以下输入三个x的值,并且调用相关函数求出不同的x代入多项式算出的不同的值,并且在屏幕上显示出来*/
	double x1,x2,x3;
	cout<<"请输入x的三个值,以空格为间隔:"<<endl;
	cin>>x1>>x2>>x3;
	cout<<"由不同的x代入多项式计算出来的值分别如下:"
		<<endl<<poly(list,x1)
		<<endl<<poly(list,x2)
		<<endl<<poly(list,x3)
		<<endl;


	list.destroy();	//完成一切操作后,应当释放为该单向链表分配的内存空间

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -