逻辑帮助,可能涉及循环

时间:2013-06-24 00:53:32

标签: .net vb.net loops logic

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

  1. 苹果
  2. Oramge
  3. 香蕉
  4. 甜瓜
  5. 木瓜
  6. 现在我的显示器上有3个项目的限制。所以说,如果我想显示Papaya,那么它必须在第二个插槽中,而Melon应该在第一个插槽上,因为它的限制为3。

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

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

4 个答案:

答案 0 :(得分:3)

如果您的阵列和插槽都是从零开始的,您可以通过简单的计算得到插槽:

slot = arrayindex mod numslots

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

slot = (arrayindex - 1) mod numslots

而且,如果您的广告位是基于一方的,只需在上述两种情况下向slot添加1。

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

因此,例如,假设基于一个数组和基于零的插槽(其中三个,0到2),木瓜的索引为5.使用:

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

因此它将进入第二个时段。

答案 1 :(得分:0)

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

进行模运算
slot = (index_of_item MOD items_on_display) + 1

答案 2 :(得分:0)

在伪代码中

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

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

答案 3 :(得分:0)

for(int k=0; k<totalFruits; k++)
{
 for(i=1; i<4; i++)
 {
  fruitNumber = i;
 }
}