题目描述
一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的一元多项式进行求导,并输出求导的结果。
本题是附加代码模式,主函数main会自动附加在同学们提交的代码后面,请同学们在提交的时候注释掉附加代码。
附加代码如下:int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); List list = InputList(); List newlist = getDerivation(list); PrintList(newlist); return 0; }
输入
输入为一个一元多项式,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束。系数和指数均为整数,指数不小于0。
输出
输出为求导结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行。 系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0并换行。
样例输入
2 7 3 5 12 1 6 0 -1 -1
样例输出
14 6 15 4 12 0
提示
数据范围:每个多项式的数据项数量不超过10000
代码框架如下,请完成相关函数的代码实现#include <iostream> #include <cstdio> #include <cstring> using namespace std; struct Node{ int r; // 系数 int e; // 指数 }; // 线性表存储一元多项式 struct List{ Node data[10000+5]; int len; }; // 输出多项式 void PrintList(const List& list){ } // 输入多项式 List InputList(){ } // 多项式求导 List getDerivation(const List& list){ } int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); List list = InputList(); List newlist = getDerivation(list); PrintList(newlist); return 0; }
解:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
struct Node{
int r; // 系数
int e; // 指数
};
// 线性表存储一元多项式
struct List{
Node data[10000+5];
int len;
};
// 输出多项式
void PrintList(const List& list){
int i;
for(i=0;i<list.len;i++){
if(list.data[i].e!=-1){
printf("%d %d ",list.data[i].r,list.data[i].e);
}//0指数项不输出
}
}
// 输入多项式
List InputList(){
List s;
int i=0,j,k;
while(scanf("%d %d",&s.data[i].r,&s.data[i].e)){//持续输入
if(s.data[i].r==-1&&s.data[i].e==-1){//跳出循环
s.len=i;
break;
}
i++;
}
return s;
}
// 多项式求导
List getDerivation(const List& list){
List s;
int i;
for(i=0;i<s.len;i++){
s.data[i].r=list.data[i].r*list.data[i].e;
s.data[i].e=list.data[i].e-1;
}
s.len=list.len;
return s;
}
int main(){
// freopen("/config/workspace/answer/DataStructure/test.in","r",stdin);
List list = InputList();
List newlist = getDerivation(list);
PrintList(newlist);
return 0;
}
标签:一元,输出,int,多项式,List,list,求导,include From: https://blog.csdn.net/2301_77185332/article/details/145166476