2

例如,我有一个项目列表,比如说:

  1. 苹果
  2. 奥兰治
  3. 香蕉
  4. 木瓜

现在我的显示器上限制了 3 个项目。所以说,如果我想显示Papaya,那么它必须在第 2 个插槽,而 Melon 应该在第 1 个插槽,因为限制为 3。

+---+---------+---------+
| 1 | Apple   | Melon   |
| 2 | Orange  | Papaya  |
| 3 | Banana  |         |
+-----------------------+

现在我无法将其转换为代码。例如,如果我想获得应该是什么插槽Banana,我应该能够获得3. 如果我想知道Melon应该是什么插槽,我会得到1. 谁能帮我吗?为了将这个想法转换为代码形式,我需要做什么。

4

4 回答 4

3

如果你的数组和槽都是从零开始的,你可以通过简单的计算得到槽:

slot = arrayindex mod numslots

如果您的数组是基于 1 的,那么它会变得有点复杂,但是您只需在模运算之前减去 1 即可解决这个问题:

slot = (arrayindex - 1) mod numslots

而且,如果您的插槽是基于 1 的,则只需slot在上述两种情况下都添加 1。

slot = (arrayindex mod numslots) + 1
slot = ((arrayindex - 1) mod numslots) + 1

因此,例如,让我们假设从 1 开始的数组和从 0 开始的槽(其中三个,0 到 2),木瓜的索引为 5。使用:

slot = (arrayindex - 1) mod numslots
slot = (    5      - 1) mod    3
slot =          4       mod    3
slot =                 1

因此它将进入第二个插槽。

于 2013-06-24T01:03:55.373 回答
0

使用运算符如何进行模运算MODhttp://msdn.microsoft.com/en-us/library/se0w9esz(v=vs.80).aspx

slot = (index_of_item MOD items_on_display) + 1
于 2013-06-24T00:56:36.703 回答
0

在伪代码中

column = 0
row = item_number
while row > max_rows
    row = row - max_rows
    column = column + 1

一旦运行,行和列将设置为正确的(基于 0)位置。您可以使用 mod 运算符更有效地实现。

于 2013-06-24T00:58:28.273 回答
0
for(int k=0; k<totalFruits; k++)
{
 for(i=1; i<4; i++)
 {
  fruitNumber = i;
 }
}
于 2013-06-24T01:13:41.210 回答