【问题标题】:Using JavaScript for arrays and loops将 JavaScript 用于数组和循环
【发布时间】:2014-10-08 10:17:49
【问题描述】:

我对 JavaScript 真的很陌生,我被困在一个给我的练习上。我正在使用 TextPad,因为这是我被要求在此练习中使用的。

基本上我需要一个输入参数,它是一个数字/整数,然后有 12 个输出参数,显示输入已除以 12,并且每个输出参数的值不超过前一个或下一个超过 1 个。

到目前为止,我已经使用数组和 for 循环编写了以下代码,但我只是不知道如何或做什么来获取输出参数以显示数组的每个值均分。

var amount = "30";

var camels = ["cam1", "cam2", "cam3", "cam4", "cam5", "cam6", "cam7", "cam8", "cam9", "cam10", "cam11", "cam12"]

for(i=0;i<camels.length;i++){
    WScript.echo(camels[i] + "|" + amount/12);
}

for(i=1; i<13; i++){
    n = Math.random();
    o = n * 12;
    p = o + 1;
    q = Math.floor(p);
}

这真的让我很困惑,所以任何帮助都将不胜感激,但请记住我是一个完全的新手。

【问题讨论】:

  • 你能举一个预期输出的例子吗?
  • 是的,抱歉,例如,如果输入为 30,则输出应类似于 2 3 3 2 2 3 2 3 3 2 3 2
  • ... 怎么样?确切的要求/任务是什么?
  • 这是给我的任务... 一名商人乘坐一列 12 头骆驼将他的货物运往市场。他想平均分担货物,但由于货物的数量可能不是 12 的精确倍数,一些骆驼将不得不额外携带一个。为了对动物公平起见,贸易商希望随机分配额外的负载。编写一个分配负载的过程。它应该有 1 个定义货物数量的输入参数,并有 12 个输出参数 - 每只骆驼一个。输出之和应与输入相同。每个输出应该是一个整数,
  • 并且输出与其他输出的差异不应超过 1。

标签: javascript arrays for-loop


【解决方案1】:

这是一道家庭作业题,如果得到一个完整的答案,你将一无所获(除了你不应该得到的 A!)

相反,我可以给你一些建议,希望能帮助你找到正确的答案。

首先要注意的是,在进行数学计算时,您需要处理数字,因此请适当更改第一行

var amount = 30;

(请注意,如果您让用户输入此数字,您需要确保其为数字并将其转换为数字 - 用户输入几乎总是一个字符串。使用 parseInt(&lt;user input&gt;,10))。

要做的第二件事是将您的金额除以 12。使用Math.floor 将此数字取整以得到一个整数。在此示例中,您将获得 24

(上面的另一种思路是考察取模运算符%,可以代替使用)

此时您可以创建一个数组,其中包含 12 个元素(每个骆驼一个),每个元素的计数应为 2(每个代表 2 个货物项目)。 (见参考文献1)

在此示例中,您最终将得到剩余的 6,剩下要做的就是将剩余的 6 随机分配给您的骆驼。

您可以通过将所有 12 只骆驼放入一个数组中,循环 6(或者,无论您的余数是多少)次并在 0{length of camel array}-1 之间选择一个随机数来实现这一点。将该货物分配给选定的骆驼,然后从骆驼阵列中移除该骆驼。这样可以确保没有一头骆驼被随机分配超过一件额外的货物。

与一般的编程一样,最后一点应该分解为单独的可管理步骤。

  1. 创建一个包含 12 个元素的数组(其中 12 是骆驼的数量)。这个数组的元素应该是数字 0-11,代表前面数组中的索引
  2. 创建一个循环,为每个余数重复以下代码一次
  3. 在循环内:
    • 选择一个介于 0 和 1 中创建的数组长度之间的随机数(参见参考文献 2)。
    • 使用该随机数来增加先前创建的数组中的计数
    • 从 1 中创建的数组中删除元素。

不要混淆;这里有 2 个数组。您之前创建的一个 - 它有 12 个元素并跟踪每只骆驼上的货物数量,另一个是临时的,用于跟踪哪只骆驼被分配了“额外”货物。前者永远不会改变长度,而后者会随着骆驼被分配额外的货物而缩小。


参考资料:

【讨论】:

    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 2012-07-09
    • 2018-04-21
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多