【问题标题】:Assigning user-determined coordinates to a nested array将用户确定的坐标分配给嵌套数组
【发布时间】:2014-03-12 01:53:51
【问题描述】:

我有两个整数,range1range2,以及一个嵌套整数数组 distance[][]

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

我正在尝试将 distance[][] 中的每个位置设置为特定的“坐标”。例如,假设 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 的值是用户对 elastic[] 和 resistance[] 输入的结果,因此每次程序运行时都可能不同。我尝试使用嵌套的 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 只是向我吐出运行时错误。

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

救命!

【问题讨论】:

  • 将两个&lt;= 更改为简单的&lt; 并且这个循环也可以工作 - 不要忘记正确初始化距离,它应该是distance[][3],而不仅仅是distance[][]
  • distance 的声明对于这个问题极为重要。请分享。
  • 我编辑了第二个代码块以包含 distance[][] 的声明
  • @Estimack 如果您使用纯 C,则此 int distance[range1][range2]; 不应编译。要为二维数组分配内存,您必须使用 malloc

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


【解决方案1】:

首先,如果使用纯 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];
    }
}

这样索引总是小于数组维度。

我希望这会有所帮助。 干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2019-11-28
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多