我们如何使用重复数字进行无限循环?

时间:2014-01-14 11:44:52

标签: c++ arrays algorithm

我创建了一个数组int spriteAnimationRight[3] = {0, 136, 272};,我希望这些数字重复如下:

0  
136  
272  
0  
136  
272  
..  
..

我们怎么做?

5 个答案:

答案 0 :(得分:5)

您可以执行以下操作

while(1)
{
   cout<<spriteAnimationRight[0];
   cout<<spriteAnimationRight[1];
   cout<<spriteAnimationRight[2];
}

答案 1 :(得分:3)

使用modulo:

int spriteAnimationRight[3] = {0, 136, 272};
for (auto i = 0; ; i++) {
    printf("%d\n", spriteAnimationRight[i%3]);
}

答案 2 :(得分:1)

int i=0;
while(1)
{
    DoSomething(spriteAnimationRight[i]);
    i++;
    if(i >= 3) i = 0;
}

答案 3 :(得分:1)

您可以使用modulo运算符:

int i = 0;
while(1) {
   if(i == 3) i = 0;  //preventing overflow
   cout<<spriteAnimationRight[i % 3];
   i++;
}

为什么会这样?

模运算符找到一个数字除以另一个 1 的剩余部分。

0 % 3  → 0
1 % 3  → 1
2 % 3  → 2
0 % 3  → 0
1 % 3  → 1
2 % 3  → 2
..
..

1 http://en.wikipedia.org/wiki/Modulo_operation

答案 4 :(得分:0)

#include <iostream>

using namespace std;

int main()
{
    int index=0;
    int spriteAnimationRight[3] = {0, 136, 272};
    while(1)
    {
         if(index==3)
         {/*when index=3, resset it to first index*/
          index=0;
         }
          cout<<spriteAnimationRight[index]<<endl; 
          index++;    
    }
}

如果你想清楚地看到输出,那么你需要在每个输出中创建一些延迟,为此你可以像这样做一个函数延迟。

#include <iostream>
using namespace std;
void delay()//to see output clearly you can make a sleep function
{
 /*this fucntion uses empty for loops to create delay*/
     for(int i=0;i<7000;i++)
     {
          for(int j=0;j<7000;j++)
          {
          }
     }
}

int main()
{
    int index=0;
    int spriteAnimationRight[3] = {0, 136, 272};
    while(1)
    {
         if(index==3)
         {/*when index=3, resset it to first index*/
          index=0;
         }
          cout<<spriteAnimationRight[index]<<endl; 
          index++; 
          delay();//for creating delay
    }
}