2012-05-25 32 views
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.再次,我有很少的編程經驗,所以任何幫助將是偉大的。

+0

這似乎在基地4只計數,但我不是對的本質真正明確的輸入數據。你能否提供實際投入的簡要例子? 此外,由於您的解決方案第4列是用C語法表達的,我可以假設這篇文章需要一個C標籤嗎? –

+0

輸入將是第一列數字以上是不變的,總是從0開始,並計數讓1000像這樣(0,1,2,3,4 ...),其他4列是我的值需要返回。例如,當輸入數字是6時,我需要var1 = 0,var2 = 0,var 3 = 1,var 4 = 2等等。我能夠用mod運算符生成第4列,但我不知道如何使用輸入數據生成第1,2和3列。從技術上講,這是用C#編寫的,但我用C語法來獲得這個想法。 – user813611

回答

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); 
} 
+0

非常感謝,這是完美的。 – user813611

+0

不客氣。我希望你明白爲什麼這對基地4有效,以及你如何能夠適應基地8,16,19 ......任何基地。 –