📄 main.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 + -