我尝试了以下代码但运行时遇到错误。我使用过Debugger但我无法理解调用堆栈中的错误。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int a[10][2],i,j, b[10],max, min;
ifstream f("numere.txt");
for(i=1;i<=10;i++)
{
for(j=1;j<=2;j++)
{
f>>a[i][j];
b[i]=0;
}
}
for(i=1;i<=10;i++)
{
for(j=1;j<=2;j++)
{
b[i]=b[i]+a[i][j];
}
}
max=b[1];
min=b[1];
for(i=1;i<=5;i++)
{
if(max<=b[i]) max=b[i];
if(min>=b[i]) min=b[i];
}
cout<<"Cea mai mare suma este:"<< max<<endl;
cout<<"Cea mai mica suma este:"<< min<<endl;
f.close();
return 0;
}
请帮帮我。我是初学者,之前从未使用过文件。
答案 0 :(得分:2)
您至少有一个错误:数组索引超出范围:
for(i= 0;i<10;i++)
{ //^^^
for(j=0;j< 2;j++)
{ //^^^
f>>a[i][j];
b[i]=0; //Why you put b[i] here??
}
}
由于您声明a[10][2]
并且数组索引从0
开始,而不是C ++中的1
。您将访问不属于a
(和b
)的内存。
答案 1 :(得分:2)
答案 2 :(得分:1)
这里突出的第一个错误是你在1
开始你的数组访问C ++数组索引从0
开始,这也意味着你在for循环中访问越界好吧,例如:
for(i=1;i<=10;i++)
^^^ ^^
应该是:
for(i=0;i<10;i++)
在分配内容之外访问内存是未定义的行为,甚至可能导致任何代码看起来都有效。