0

我正在为基于可视节点的 CAD 程序编写一些功能,该程序不允许我循环,因此我需要一种解决方法来枚举数字列表。我是一名几乎没有编程经验的架构师,所以任何帮助都会很棒。

A 有一个数字数组(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 列 2 和 1 . 同样,我的编程经验很少,所以任何帮助都会很棒。

4

1 回答 1

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);
}
于 2012-05-29T17:46:23.550 回答