我有两个整数, 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只是向我发送运行时错误。
无论如何,我不确定我能做些什么来解决这个问题;该程序应该从用户获取三个值(最小+最大阻力值和弹性的增量大小),以计算射弹的最大距离,并以表格的形式输出结果。
帮助!
答案 0 :(得分:0)
首先,如果使用普通C,则需要为矩阵维度提供常量值(您需要设置range1
和range2
的最大值,例如:
int distance[200][200];
这意味着range1
和range2
的最大值为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];
}
}
这样索引始终小于数组维度。
我希望这会有所帮助。 欢呼声。