1010 一元多项式求导 (25 分)

北战南征 提交于 2019-11-29 19:31:04

设计函数求一元多项式的导数。(注:xn​​(n为整数)的一阶导数为nxn1​​。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0这道题目不难,但是刚开始的零多项式困惑了我好久(数学太菜!),上网查了一下:原来零多项式就是结果为0的多项式。这个概念搞清楚后就简单多了。另外还有输入时读取数据的问题,用Ctrl+Z表示文件结束符EOF。如何告诉程序输入已经结束了呢?在Windows下,输入完毕后先按Enter,再按Ctrl+Z键,最后再按Enter键即可结束输入。在Linux下,输入完毕后按Ctrl+D键即可结束。我的思路:计算系数coe与ind的成绩,如果为0则不输出;否则输出导数形式coe*ind ind-1。另外要注意每次输出时要判断是否为第一次输出(与题目要求输出格式相符合)。最后判断一下是否有输出,如果没有输出,则给定的多项式的导数项为零多项式。
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int coe,ind;
    bool flag=false;    //表示是第一次输出 
    while(cin>>coe>>ind)
    {
        if(coe*ind!=0)
        {
            if(flag)
                cout<<" ";
            cout<<coe*ind<<" "<<ind-1;
            flag=true;    
        }
    }
    if(!flag)    //没有输出过
        cout<<"0 0"<<endl; 
    return 0;
}

 

拓展:如果在while循环中连续输入一组数据后用Ctrl+Z表示本次输入完成后,程序还要继续输入数据式,我们应该怎样设计输入输出框架?answer:
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int coe,ind;
    while(cin>>coe)
    {
        cout<<coe<<" ";
    }
    cin.clear();    //这个要加上,将上次读入的Ctrl+Z删除。
    cin>>ind;
    cout<<"***"<<ind<<endl;
    return 0;
}

以上代码就可以解决!关于输入输出以后再作进一步总结……


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!