处理一个布尔数组好像在二进制中递增

问题描述:

我试图创建一个循环来改变布尔数组中的值,使它看起来像是数组在二进制值中递增。处理一个布尔数组好像在二进制中递增

例如

1st iteration [0|0|0] 
2nd iteration [0|0|1] 
3rd iteration [0|1|0] 
4th iteration [0|1|1] 

此数组是动态的,但是,可以是不同的尺寸。所以无论我写什么循环都需要在五个元素而不是三个元素上工作。

对于没有任何启动代码的道歉,但我一直在困扰自己几个小时,甚至不能提出如何开始。

+0

写的东西,但更简单呢。编写一个只循环大小为1的数组的循环。然后尝试3.然后尝试n。 “我不可能开始任何事情”是不可信的。 – 2015-01-21 06:44:06

+0

就这样做,你已经学会了在学校增加大数字(冒号由冒号和结转) – MikeMB 2015-01-21 06:46:40

尝试this。这可能是不完整的,但你可以做同样的事情类似

#include <iostream> 
using namespace std; 

void increment(bool* array, int len) 
{ 
    for (int i = len - 1; i >= 0; --i) 
    { 
     if (! array[i]) 
     { 
      array[i] = true; 
      return; 
     } 
     array[i] = false; 
    } 
} 

int main() 
{ 
    bool* array = new bool[10]; 

    for (int i = 0; i < 5; ++i) 
    { 
     increment(array, 10); 

     for (int i = 0; i < 10; ++i) 
     { 
      cout << (array[i] ? 1 : 0) << "|"; 
     } 
     cout << endl; 
    } 

    return 0; 
} 
+0

这段代码不依赖于'cout FutureShocked 2015-01-21 07:15:28

+1

main()中的嵌套数组仅用于显示值。为了清楚起见,increment()函数是分开的。你可以把它带到main()本身。然后用中断替换返回。 – 2015-01-21 07:24:04

+0

会添加for循环'for(int i = 0; i FutureShocked 2015-01-21 08:16:37

#include <iostream> 
#include <cmath> 
#include <memory> 

using namespace std; 

void ArrayIterate(int); 
void printArray(bool*,int); 

void ArrayIterate(int arraySize) 
{ 
    int decimal_value = 0; 
    int decimal_place_value = 0; 
    bool* boolArray = new bool(arraySize); 
    long double max_itr = pow(2,arraySize); 
    for (int i = 0; i < max_itr ; ++i) 
    { 
     decimal_value = i; 
     // set array values 
     for (int k = arraySize - 1; k >= 0; --k) 
     { 
      decimal_place_value = pow(2,k); 
      if(decimal_value != 0 && decimal_value/decimal_place_value >= 1) 
      { 
       boolArray[k] = true; 
       decimal_value -= decimal_place_value; 
      } 
      else 
       boolArray[k] = false; 
     } 
     printArray(boolArray,arraySize); 
     cout << " = " << i << endl; ; 
    } 
    delete boolArray; 
    return; 
} 

void printArray(bool* boolArray, int arraySize) 
{ 
    cout << "\t"; 
    for(int i = arraySize - 1; i >= 0; --i) 
     cout << ((boolArray[i] == true)? 1 : 0) << " "; 
    return; 
} 

int main() 
{ 
    cout << "\n\n"; 
    ArrayIterate(4); 
    cout << "\n\n" << endl; 
    return 0; 
}