我正在为基于视觉节点的CAD程序编写一些功能,这些功能不允许我循环,因此我需要一种解决方法来枚举数字列表。我是一名建筑师,编程经验很少,所以任何帮助都会很棒。
有一个数字数组(numArray)就是这样的0,1,2,3,4 ......(第一列)我需要取这些数字并将它们转换成第1,2列的对应数字, 3,4不使用任何循环或嵌套循环。
numArray 1 2 3 4
-----------
0 = 0|0|0|0
1 = 0|0|0|1
2 = 0|0|0|2
3 = 0|0|0|3
4 = 0|0|1|0
5 = 0|0|1|1
6 = 0|0|1|2
7 = 0|0|1|3
8 = 0|0|2|0
9 = 0|0|2|1
10= 0|0|2|2
12= 0|0|2|3
13= 0|0|3|0
14= 0|0|3|1
15= 0|0|3|2
16= 0|1|3|3
17= 0|1|0|0
18= 0|1|0|1
19= 0|1|0|2
20= 0|1|0|3
21= 0|1|1|0
22= 0|1|1|1
23= 0|1|1|2
24= 0|1|1|3
我通过实施以下内容找到了第4栏:
int column4 = numArray % 4;
这工作并创建数字0,1,2,3,0,1,2,3 ....这很好但是我不知道如何使用num数组进来产生第3列我再次获得很少的编程经验,所以任何帮助都会很棒。
答案 0 :(得分:1)
您正在将输入转换为基数4表示法,因此这将完成工作:
int input[] = {0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24};
for (int i = 0; i < sizeof(input)/sizeof(input[0]); i++)
{
int c1, c2, c3, c4;
c4 = input[i] % 4;
c3 = (input[i] / 4) % 4;
c2 = (input[i] / 16) % 4;
c1 = (input[i] / 64) % 4;
printf("%d = %d\t%d\t%d\t%d\n", input[i], c1, c2, c3, c4);
}