2012-03-30 7 views
-2

私は4x8行列を持っています。行列内の値をシフト

{ 
0,0,0,0,0,0,0,0 

0,0,0,0,0,0,0,0 

0,0,0,0,0,0,0,0 

0,0,0,0,0,0,0,0 
} 

I入力であれば "10111101"、そしてプロセスは次のようにする必要があります:

{ 
1,0,0,0,0,0,0,0 

1,0,0,0,0,0,0,0 

0,0,0,0,0,0,0,0 

1,0,0,0,0,0,0,0 
} 

then 

{ 
1,1,0,0,0,0,0,0 

0,1,0,0,0,0,0,0 

1,0,0,0,0,0,0,0 

1,1,0,0,0,0,0,0 
} 

then 

{ 
0,1,1,0,0,0,0,0 

0,0,1,0,0,0,0,0 

0,1,0,0,0,0,0,0 

0,1,1,0,0,0,0,0 
} 

then 

{ 
0,0,1,1,0,0,0,0 

0,0,0,1,0,0,0,0 

0,0,1,0,0,0,0,0 

0,0,1,1,0,0,0,0 
} 

{ 

0,0,0,1,1,0,0,0 


0,0,0,0,1,0,0,0 

0,0,0,1,0,0,0,0 

0,0,0,1,1,0,0,0 
} 

、これが最後になります。すべての列を終了した後、再び開始されます。

私は実際には、楕円形のマトリックス(4x8)を持っています。 List <>を使用し、すべてのコントロールがshapecontainerにあります。私は1を見つけると色を変えたい。この部分はできるが、私はどのようにして行列を1,0にすることができないのだろうと思う。

どうすればいいですか?ここで

は私のコードです:

int型のk = 0;

for (int i = 0; i < stringLength; i++) 
    {     
     if(toto[i].ToString()=="1") 
     { 
      ovalShape[k].FillColor = Color.Red; 
      k = k + 1; 
     } 
     else if (toto[i].ToString() == "0") 
     { 
      ovalShape[k].FillColor = Color.LawnGreen; 
      k = k + 1; 
     } 
     else 
     { 
      k = k+1-1; 
     } 
    } 
+1

"Shift 1、0マトリックス"とはどういう意味ですか?私はそれを得ていない。これで何をしようとしていますか? – Msonic

+3

4x8行列です(行が最初に表示されます)。 – saadtaame

+0

また、何を試しましたか?あなたもいくつかのコードを投稿する必要があります。 – Msonic

答えて

1

最初に表示する列を決定するために変数を使用しないのはなぜですか?私はまた、あなたのコードに変更を加え

void ChangeArrayDisplay(int firstColumn) //Any column can be first, from 0 to 7 
{ 
    int k = 0; 
    for (int i = firstColumn * 4; i < stringLength; i++) 
    { 
     changeOvalColor(k, toto[i]); 
     k++; 
    } 
    for (int i = 0; i < firstColumn * 4; i++) 
    { 
     changeOvalColor(k, toto[i]); 
     k++; 
    } 
} 

void ChangeOvalColor(int index, int colorValue) 
{ 
    if(colorValue == 0) 
     ovalShape[index].FillColor = Color.Red; 
    else 
     ovalShape[index].FillColor = Color.LawnGreen; 
} 

(未テスト)(私はここでfirstColumn使用しています)。 あなたはk = k + 1;k++;

編集 と等価であることを知っておくべき問題が変更されましたが、私はまだここであなたの8×4の形式を使用しています。新しい状況に適応するようにコードを変更することができます。

+0

私は 'k = k + 1-1;'も削除しました。何もしないからです。加えて、0と1と異なる値を持つべきではないでしょうか?私のコードでは、ゼロ以外の値は緑であるとみなされます。 – Msonic

+0

ありがとうございました。私は色の変更を行った。 このデータを左から右にシフトするもう1つの部分はまだ取り消されていません。 入力が「11011011」であるとします。これは最初の2つの列の色を変更します。私の行列は6列以上あります。私はこのデータを次の列に移動したい。動くLEDディスプレイのように。 私はあなたにMsonicを明確にしていますか?コミュニケーション能力の乏しい方にお詫び申し上げます。 –

+0

これは上記のコードで行うことができます。完全な行列をロードするだけです。 ChangeArrayDisplay()を呼び出すたびにfirstColumnが異なるたびに、表示が変わりますが、マトリックスを変更する必要はありません。 – Msonic

関連する問題