B1010 一元多项式求导

// B1010 一元多项式求导.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/*
考察:1、一元多项式求导——以数组来做

编程思想:(注意边界)

1、用数组存取,下标是指数?下标上的上的位置为系数
2、求导就是,系数 * 下标 放在 i--,即 a [i - 1] = a[i] * i ,
3、逆着来还是顺着来,顺着来了从 i = 1放到i = 0上,从低到高,不会覆盖掉
4、边界条件,0 0

learn && wrong:
1、如何求导——求导就是,系数 * 下标 放在 i--,即 a [i - 1] = a[i] * i ,
2、如果我没有x的0次,那我如何终止循环呢?while ...EOF比较好,对,不一定以0为结尾!不一定以常数为结尾!
3、注释不好,放旁边不要上面

4、然后还有,a[i]上如何处理,其实是输出错了,是a[i - 1],输出还要i - 1的,而且a[i]要置为0
5、再次强调,认真调试比瞎猜原因快!
6、数组经常越界
7、从低到高覆盖,从高到低输出

#include <iostream>
using namespace std;

const int num = 1010;
//array放到main外面就提示不明确,放到main里面就没有提示,而且,纠正了之前的一点,就是数组下标可以是变量的
int main()

{   
    int array[num] = { 0 };//下标i为指数,a[i]为系数,指数不超过1000,即下标不超过1000
    int xishu, zhishu ;
    int size = 0;
    while (scanf_s("%d %d", &xishu, &zhishu), zhishu != 0) {
        array[zhishu] = xishu;
        size++;
    }
    
    for (int i = 1;i < num;i++) { //如何求导呢,遍历数组,如果数组数字不为0,则a[i] * i放到a[i-1]上去,但是array[i]要处理掉,而且新的开始也要处理输出        //这里错了,不是size,而且,好像是从高位往低位输出
        if (array[i] != 0) {
            array[i - 1] = array[i] * i; 
            array[i] = 0; //直接为0是对的
        }
    }

    if (size == 0) printf("0 0");
    else {
        for (int i = num - 1;i >= 0;i--) { 1、求导是对的,但前面有个很大的数字,越界了,i不是num,而是num - 1;2、从高到低输出
            if (i > 0 && array[i] != 0) 
                printf("%d %d ", array[i], i);
            else if(i == 0 && array[i] != 0) printf("%d %d", array[0], i); //else if如果写成else,也是错的,一堆0
        }
    }
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 整体都在谈租房的各种攻略,那关于租房还有没有其他值得值得一提的事情? 比如古人如何租房?房主为什么叫做“房东”?租...
    未亚妃阅读 4,251评论 0 0
  • 1.如果可能,还是要好好读书与学习 高起点高学历带来的职业机遇不同,接触的环境圈层包括未来的眼界,都会大不相同。 ...
    wudixianfeng阅读 1,522评论 0 3
  • 2018年,7月9日, 阴天。 今天下雨,我和我爸爸今天晚上看电影,早上我妈和我爸还有我,我跟着我爸我妈...
    卫雯政阅读 2,394评论 0 0
  • 天气 阵雨 周四 农历七月初六 我是日记星球507号星宝宝陈晓,我正在参加日记星球第22期蜕变之旅,这是我的...
    陈晓是我阅读 1,495评论 1 1

友情链接更多精彩内容