一次使用后功能输出会发生变化

时间:2015-03-18 19:47:07

标签: c++ function

我2天前问过这个问题,但是我没有提供足够的信息来解决这个bug,这次我会更具体,我会提供完整的代码。现在我已经调试了一段时间,我意识到了一些新的东西:

我有这个功能:

double calc_value(string equation, int degree, char _for)
{
 string monom[100];
 Monomial monomial[100];
 double val_sum[100];

 memset(val_sum,0,sizeof(val_sum));

 for(int i = 0; i < count_monom(equation); i++)
 {
  monom[i] = obt_mon_from(equation,i);
  monomial[i] = str_to_monomial(equation,i,monom[i],_for);

  if(monomial[i].member == 2)
  monomial[i].value *= -1;

  val_sum[monomial[i].degree] += monomial[i].value;
 }

 return val_sum[degree];
}

当这样调用时:calc_value("8x^9 - 2x = 3 - 2x^5 + 2x^8 + 1.5x^3",9,'x')输出必须为8,因为它计算9度单项式的值。它在我使用它一次时有效,但在第一次使用后它开始输出-8。

这是我的主要功能:

int main(int argc, char *argv[])
{
    string eq = "8x^9 - 2x = 3 - 2x^5 + 2x^8 + 1.5x^3";

    cout << calc_value(eq,9,'x') << " ";
    cout << calc_value(eq,9,'x') << " ";
    cout << calc_value(eq,9,'x');

    system("PAUSE");
}

正如我所说,输出是&#34; 8 -8 -8&#34;什么时候应该是&#34; 8 8 8&#34;。

这是完整的&#34;代数&#34;标题(其他2个并不重要):pastebin.com/wcy94zXN

顺便说一句:我检查了重要函数中的每个数组,它们没有溢出,程序在调试模式下运行正常(Code :: Blocks,GCC编译器)。

0 个答案:

没有答案