运行代码时出错

时间:2013-07-23 18:07:32

标签: c++ text-files

我尝试了以下代码但运行时遇到错误。我使用过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;

}

Call Stack Screenshot

请帮帮我。我是初学者,之前从未使用过文件。

3 个答案:

答案 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)

C ++数组中的第一个索引是 0 ,而不是 1

尝试在循环中从 0 转到 9 ,而不是从 1 转到 10 。< / p>

您可以获得有关C ++数组here的更多信息。

答案 2 :(得分:1)

这里突出的第一个错误是你在1开始你的数组访问C ++数组索引从0开始,这也意味着你在for循环中访问越界好吧,例如:

for(i=1;i<=10;i++)
    ^^^  ^^

应该是:

for(i=0;i<10;i++)

在分配内容之外访问内存是未定义的行为,甚至可能导致任何代码看起来都有效。