c++ 程序不使用`#include<cmath>` 执行

c++ program doesn't execute with `#include<cmath>`

我正在为我的 class 编写一个程序来解决一个接一个的问题。这部分:

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int main() {

    ifstream data;
    data.open("data.txt");

    //LOAD VALUES
    int d[200][320];

    for(int i=0;i<200;i++){
        for(int j=0;j<320;j++){
            data>>d[i][j];
        }
    }

int m=1,c=0;//max length, current length

    for(int i=0;i<320;i++){//columns
        for(int j=1;j<200;j++){//rows

            if(d[i][j]==d[i][j-1])c+=1;
            else if(c>m){
                m=c;    
                c=0;
            }
            else c=0;

        }
    }

    cout<<"max length: "<<m<<endl;
return 0;
}

在数组中搜索相同值的最长垂直线。我评论了程序的其他部分,其中一个部分需要 cmath 库。 当我用 #include<cmath> 编译上面的部分时,执行持续的时间过长并且在 cout 上没有输出,只有一个空行。当我不包括 cmath 时它可以正常工作。知道为什么会这样以及如何解决它吗? 这是 link 到 "data.txt"

编辑:即使在删除 #inclde<cmath> 后它也停止工作。程序是否正确执行似乎是完全随机的。

包括cmath与您的问题无关。

您在分析数据时出现称为缓冲区溢出的未定义行为。 这是 live demo with index checking (抛出异常)。 基本上你搞乱了索引的顺序。

这里是fixed version of your code(有索引检查)。

顺便说一句,你的代码很乱,学会把代码拆分成更小的函数。 Primitive demo(可以做得更好,但初学者应该没问题)。