//■BitArrayによる集合演算の表現例 // @BitArrayを使えるようにするためにusing System.Collections; を追加する // Aラベルデータを3つ追加し、それぞれlblDsp1,lblDsp2,lblDsp3とする。 // (値A, B, Cの表示用) // AutoSizeをFalseにして集合の数(10個)分が表示できるようにする。 // BtextBox1,textBox2を追加する(値A, 値Bセット用)。 // Cbutton1(Text=Set),button2(Text=Set), // button3(Text=In ),button4(Text=In ), // button5(Text=A∪B), button6(Text=A∩B), button7(Text=A−B), // button8(Text=Delete),butto9(Text=Delete)を追加する。 //  (変数A用 button1, button3, button8) //  (変数B用 button2, button4, button9) // (演算用 button5, button6, button7) // Dそれぞれのボタン用のClickイベントハンドラを指定する。 // 【実行時】Aの値はlblDsp1,Bの値はlblDsp2,Cの値はlblDsp3に表示。 // @textBox1に0〜9を指定して // button1をクリックするとAの指定位置のビットが1になり // button2をクリックするとBの指定位置のビットが1になる。 // AtextBox1に0〜9を指定して // button3をクリックするとAの指定位置のビットが0になり // button4をクリックするとBの指定位置のビットが0になる。 // BtextBox1に0〜9を指定して // button5をクリックするとAの指定位置のビットが1かどうかが表示され // button6をクリックするとBの指定位置のビットが1かどうかが表示される。 // Cbutton5〜button7をクリックすると、それぞれの演算が行われ、 // lblDsp3に表示される。 // using System; using System.Collections; //これを追加する //using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace bitArray { public partial class Form1 : Form { BitArray myBA1 = new BitArray(10, false); BitArray myBA2 = new BitArray(10, false); BitArray myBA3 = new BitArray(10, false); public Form1() { InitializeComponent(); } private string Bit列(BitArray A) { string S = ""; for (int i = 0; i < A.Length; i++) S += (A[i] ? "1" : "0"); return S; } private void 表示() { lblDsp1.Text = Bit列(myBA1); lblDsp2.Text = Bit列(myBA2); lblDsp3.Text = Bit列(myBA3); } private void Form1_Load(object sender, EventArgs e) { 表示(); } private BitArray addMember(BitArray BA, int Member) { BitArray B = (BitArray)BA.Clone(); if (Member < BA.Length) B[Member] = true; return B; } private BitArray deleteMember(BitArray BA, int Member) { BitArray B = (BitArray)BA.Clone(); if (Member < BA.Length) B[Member] = false; return B; } private void button1_Click(object sender, EventArgs e) { myBA1 = addMember(myBA1, int.Parse(textBox1.Text)); 表示(); } private void button2_Click(object sender, EventArgs e) { myBA2 = addMember(myBA2, int.Parse(textBox2.Text)); 表示(); } private void button3_Click(object sender, EventArgs e) { MessageBox.Show(myBA1[int.Parse(textBox1.Text)].ToString()); } private void button4_Click(object sender, EventArgs e) { MessageBox.Show(myBA2[int.Parse(textBox2.Text)].ToString()); } private void button5_Click(object sender, EventArgs e) { BitArray A = (BitArray)myBA1.Clone(); ;//(BitArray)myBA1.Clone; myBA3 = A.Or(myBA2); 表示(); } private void button6_Click(object sender, EventArgs e) { BitArray A = (BitArray)myBA1.Clone(); myBA3 = A.And(myBA2); 表示(); } private void button7_Click(object sender, EventArgs e) { BitArray A = (BitArray)myBA1.Clone(); BitArray B = (BitArray)myBA2.Clone(); myBA3 = A.And(B.Not()); 表示(); } private void button8_Click(object sender, EventArgs e) { myBA1 = deleteMember(myBA1, int.Parse(textBox1.Text)); 表示(); } private void button9_Click(object sender, EventArgs e) { myBA2 = deleteMember(myBA2, int.Parse(textBox2.Text)); 表示(); } } }