0

ループを許可しないビジュアルノードベースのCADプログラムの機能をいくつか作成しているので、数値のリストを列挙するための回避策が必要です。私はプログラミングの経験がほとんどない建築家なので、どんな助けでも素晴らしいでしょう。

Aには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配列を使用して列32と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 に答える