使用struct的某些成员会影响struct C ++

时间:2017-03-05 09:47:08

标签: c++ arrays struct

问题解答,谢谢 问题显然来自于没有声明vf大到足以包含9 - >它应该是vf [10]

长话短说,在输入文件中我有一个9 x 9元素的二维数组。它包含{0,1 ... 9}的元素。我需要确切地计算出每个数字在每一行上显示的次数(为此我使用 vf [] 数组),以及有多少与0不同(为此我使用'数字')。我将 vf [] 数字包含在结构中,如下所示:

struct Line
{
    short vf[9];
    short number;
}L[10];

在阅读了2d数组之后,我使用 Analyze()来确定每一行有多少数字与0不同,以及每个数字在该行上出现的次数。

void Analyze()
{
    for ( short i = 1 ; i <= 9 ; ++i )        // lines
        for ( short j = 1 ; j <= 9 ; ++j )    //columns
            if ( M[i][j] )                    //different from 0
            {
                L[i].number++;
                L[i].vf[ M[i][j] ]++;
            }
}

现在,这里出现了一个我无法解释的问题。这是输入的外观:

2 5 8 7 3 0 9 4 1    // number should be 8
6 0 9 8 2 4 3 0 7    // number should be 7
4 0 7 0 1 5 2 6 0    // number should be 6
3 9 5 2 7 0 4 0 6    // number should be 7
0 6 2 4 0 8 1 0 5    // number should be 6
8 4 0 6 5 0 7 2 9    // number should be 7
1 8 4 3 6 9 5 7 2    // number should be 9
0 7 0 1 4 2 0 9 3    // number should be 6
9 2 3 5 8 7 6 1 4    // number should be 9

但是,我从每行得到的数字是:

9 8 6 8 6 8 10 7 10 

现在,如果我从 Analyze()中删除 L [i] .vf [M [i] [j]] ++; 行,我会得到一个不同的输出,即:

8 7 6 7 6 7 9 6 9

所以问题是,是否有人预测为什么增加 vf [] 似乎也会对数字产生影响?

如果我犯了任何英语错误,请轻松告诉我。

1 个答案:

答案 0 :(得分:0)

以下是我对此代码所显示/做出的一些错误/更改:

struct Line
{
    short vf[9]; 
             ^^ here a number 9 can't be counted as index range is 0-8
    short number;
    Line()
    {
        std::fill_n(v,9,0); //fills the array with 0
        number = 0; // Initialized the number with 0
    }

}L[10];
  

编辑:感谢@HolyBlackCat的评论,我在初始化部分意识到了错误。我现在纠正了。