-2

我正在尝试实现这个函数来添加两个动态的 a ray,但是当我将它实现到我的 main 中时它完全崩溃了,我不知道为什么......

我不明白为什么程序会关闭,除了 scite 上的退出代码说退出代码 255。但这没有帮助。知道问题可能是什么吗?

4

3 回答 3

1

You have a typo on this line:

for (j=max-1; j>0 && sum[j]==0; --j); 
                                    ^here

The next statement int *tmp=sum; does not get executed.

Also the for loop should probably be

for (j=max-1; j>=0 && sum[j]==0; --j)
                ^ //don't forget the last member
于 2013-11-01T07:06:12.367 回答
1

C++ 的一些优点是所有标准容器(如std::vector)和可用的标准算法。例如,您可以使用向量和反向迭代器并std::find_if_not找到最后一个非零值。

喜欢

// Create a vector of a specific size, and initialize it
std::vector<int> sum(std::max(a->degree, b->degree), 0);

// Fill it up...

// Find the last non-zero value
auto last_non_zero = std::find_if_not(sum.rbegin(), sum.rend(),
    [](const int& value){ return value == 0; });

if (last_non_zero == sum.rbegin())
{
    // No zeroes found
}
else if (last_non_zero == sum.rend())
{
    // All of it was zero
    sum.clear();
}
else
{
    std::vector<int> temp(last_non_zero, sum.rend())
    std::reverse(temp);  // Because the `temp` vector is reversed
    sum = temp;
}

在此之后,向量sum应该被去除尾随零。

于 2013-11-01T07:40:14.943 回答
1

对于一个:

for (int k=0; k<=max; k++)

这超出了范围。[max+1]而是为元素分配内存,因为多项式中应该有max+1项。

sum = new int[ max + 1 ];

此外,j循环应该从max.

for (j=max; j>0 && sum[j]==0; --j);
于 2013-11-01T07:04:16.107 回答