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(可以做得更好,但初学者应该没问题)。
我正在为我的 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(可以做得更好,但初学者应该没问题)。