处理一个布尔数组好像在二进制中递增
我试图创建一个循环来改变布尔数组中的值,使它看起来像是数组在二进制值中递增。处理一个布尔数组好像在二进制中递增
例如
1st iteration [0|0|0]
2nd iteration [0|0|1]
3rd iteration [0|1|0]
4th iteration [0|1|1]
等
此数组是动态的,但是,可以是不同的尺寸。所以无论我写什么循环都需要在五个元素而不是三个元素上工作。
对于没有任何启动代码的道歉,但我一直在困扰自己几个小时,甚至不能提出如何开始。
尝试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;
}
这段代码不依赖于'cout FutureShocked 2015-01-21 07:15:28
main()中的嵌套数组仅用于显示值。为了清楚起见,increment()函数是分开的。你可以把它带到main()本身。然后用中断替换返回。 – 2015-01-21 07:24:04
会添加for循环'for(int i = 0; i
#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;
}
写的东西,但更简单呢。编写一个只循环大小为1的数组的循环。然后尝试3.然后尝试n。 “我不可能开始任何事情”是不可信的。 – 2015-01-21 06:44:06
就这样做,你已经学会了在学校增加大数字(冒号由冒号和结转) – MikeMB 2015-01-21 06:46:40