将用户确定的坐标分配给嵌套数组

时间:2014-03-12 01:53:52

标签: c arrays coordinates nested-loops multidimensional-array

我有两个整数, range1 range2 ,以及嵌套的整数数组 distance [] []

我还有两个整数数组,弹性[] 抵抗[] ,两者都包含一组用户确定的值。上述 range1 等于弹性[] 的长度,而 range2 等于 resistance []的长度

我想要做的是将距离[] [] 中的每个位置设置为特定的"坐标"。例如,假设range1 = 2且range2 = 3:

    distance[0][0] = elasticity[0] * resistance[0];
    distance[0][1] = elasticity[0] * resistance[1];
    distance[0][2] = elasticity[0] * resistance[2];
    distance[1][0] = elasticity[1] * resistance[0];
    distance[1][1] = elasticity[1] * resistance[1];
    distance[1][2] = elasticity[1] * resistance[2];

等等。显然我不能使用类似上面例子的东西,因为range1和range2的值是用户输入弹性[]和阻力[]的结果,因此每次程序都可能不同运行。我试图使用嵌套的for循环,如下所示:

    int distance[range1][range2];

    for(int i = 0; i <= range1; i++)
    {
        for(int j = 0; j <= range2; j++)
        {
            distance[i][j] = elasticity[i] * resistance[j];
        }
    }

据我所知, 应该工作,但Xcode只是向我发送运行时错误。

无论如何,我不确定我能做些什么来解决这个问题;该程序应该从用户获取三个值(最小+最大阻力值和弹性的增量大小),以计算射弹的最大距离,并以表格的形式输出结果。

帮助!

1 个答案:

答案 0 :(得分:0)

首先,如果使用普通C,则需要为矩阵维度提供常量值(您需要设置range1range2的最大值,例如:

int distance[200][200];

这意味着range1range2的最大值为200

然后,在循环条件中,您需要考虑数组索引是基于0的。因此,如果你说,数组中有4个元素,它们的索引将是0,1,2和3。

所以,你需要改变你的代码:

for(int i = 0; i < range1; i++)
{
    for(int j = 0; j < range2; j++)
    {
        distance[i][j] = elasticity[i] * resistance[j];
    }
}

这样索引始终小于数组维度。

我希望这会有所帮助。 欢呼声。