2D数组和for循环

时间:2015-07-13 19:55:52

标签: c++ arrays for-loop multidimensional-array

我对C ++编程很新,我有2D数组和循环的问题..我正在寻找我最近制作的程序解决方案,但其他一切都很好。除了这个for循环。

这只是程序的一小部分,但似乎问题在于此代码。这个程序基本上是一个测试。有5个问题,3个答案选项,用户应输入1,2,3(int值,负责将这些值输入atsakymai []数组的函数正常工作)。 JDM,USDM,EUDM数组应该保留正确答案的分数(它们在开始时设置为0)。 atsakymoVerte数组保持点依赖的答案顺序。对于前者1 - +1指向JDM; 2 - 1+到USDM; 3 - 1+到EUDM。

这个程序似乎正常工作,直到for循环达到y = 4. 但之后它会给出错误值...前3次循环工作正常并增加正确的变量(来自JDM,USDM的变量)或者EUDM数组)。一切顺利,直到第四次循环...我不知道我应该改变什么才能让它正常工作。我坐在这个问题旁边几个小时,但是没有解决方案。我希望你们能理解我的问题是什么。感谢。

int *JDM = new int[6]();
int *USDM = new int[6]();
int *EUDM = new int[6]();

int atsakymoVerte[6][4] = {
{0,0,0,0},
{0,2,1,3},
{0,2,1,3},
{0,1,2,3},
{0,3,1,2},
{0,3,1,2}
};

for (int y = 1 ; y < 6; y++) {
        for (int x = 1; x < 4; x++) {
           if (atsakymai[y] == atsakymoVerte[y][x]) {
           switch (x) {
                case 1: JDM[y]++;
                    break;
                case 2: USDM[y]++;
                    break;
                case 3: EUDM[y]++;
                    break;
           }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

不了解c ++ - 尽管许多其他语言都有0索引数组。这意味着0是第一个元素。

所以而不是

for (int y = 1 ; y < 6; y++)
        for (int x = 1; x < 4; x++)

应该是

for (int y = 0 ; y < 6; y++)
        for (int x = 0; x < 4; x++)

通过使用你现在拥有的循环,第一遍的y等于1 - 这将是atsakymai[1] - 这实际上是{{1}中的第二个元素数组,而不是第一个。

如果您不小心,您最终也可能会尝试引用一个不存在的索引。

答案 1 :(得分:1)

我认为你实际上是通过n-2计算循环,将你的循环改为

<<<<<<< ours
||||||| base
<<<<<<< Temporary merge branch 1
||||||| merged common ancestors
        if (sendRedirect(result))
            return new Result("redirect");

=======

        if ( result.getId() != null )
        {   
            object = new SomeObject(searchResult.getId()) ;
        }

        if (sendRedirect(result)){
            return new Result("redirect");
        }

>>>>>>> Temporary merge branch 2
=======

        if ( result.getId() != null )
        {   
            object = new SomeObject(searchResult.getId()) ;
        }

>>>>>>> theirs

这个for (int y = 0 ; y < 6; y++) for (int x = 0; x < 4; x++) 声明在哪里你必须定义它以比较你的数组,否则你会不断收到错误

你伪造一个基于1的数组,你不应该这样做。这会导致许多问题并浪费内存。为什么要制作无用的元素,如果你有一个1000乘1000的“2d”数组,你会浪费2000个元素。

我会有以下

atsakymai[y]