
7.2 配列による集合 |
||||
|
|
||||
| // データ宣言 public int[][] Set = new int[3][]; // 結果の表示 public void 表示() { string S; listBox1.Items.Clear(); foreach(int[] A in Set) { if(A.Length==0) S="[]"; else { S=""; foreach(int X in A) S += X.ToString()+", "; S = "[" + S.Substring(0,S.Length-2)+ "]"; } listBox1.Items.Add(S); } } // 初期設定 private void button1_Click(object sender, System.EventArgs e) { Set[0]= new int[3]{1,2,3}; Set[1]= new int[0]{}; Set[2]= new int[4]{4,5,6,7}; 表示(); } // 集合SにXが入っているかどうか private bool SetMember(int X, int[] S) { for(int i=0;i<S.Length;i++) if(X==S[i])return true; return false; } private void button2_Click(object sender, System.EventArgs e) { int EL=int.Parse(textBox1.Text); int ID=int.Parse(textBox2.Text); if(ID>=0 && ID<=2) MessageBox.Show(SetMember(EL,Set[ID]).ToString()); } // 集合SにXを追加 private int[] AddMember(int X,int[] S) { if(SetMember(X,S)) return S; int[] S2=new int[S.Length+1]; for(int i=0;i<S.Length;i++) S2[i]=S[i]; S2[S.Length]=X; return S2; } private void button3_Click(object sender, System.EventArgs e) { int EL=int.Parse(textBox1.Text); int ID=int.Parse(textBox2.Text); Set[ID]=AddMember(EL,Set[ID]); 表示(); } // 集合SからXを削除 private int[] DelMember(int X,int[] S) { if(!SetMember(X,S))return S; int[] S2=new int[S.Length-1]; int ii=0; for(int i=0;i<S.Length;i++)if(S[i]!=X) S2[ii++]=S[i]; return S2; } private void button4_Click(object sender, System.EventArgs e) { int EL=int.Parse(textBox1.Text); int ID=int.Parse(textBox2.Text); Set[ID]=DelMember(EL,Set[ID]); 表示(); } // S1とS2の和集合 private int[] SetUnion(int[] S1,int[] S2) { int[] S = S2; foreach (int EL in S1) S = AddMember(EL,S); return S; } private void button5_Click(object sender, System.EventArgs e) { int ID1=int.Parse(textBox2.Text); int ID2=int.Parse(textBox3.Text); Set[ID1]=SetUnion(Set[ID1],Set[ID2]); 表示(); } // S1とS2の積集合 private int[] SetIntersection(int[] S1,int[] S2) { int[] S = new int [ ]{ }; foreach (int EL in S1) if(SetMember(EL,S2))S = AddMember(EL,S); return S; } private void button6_Click(object sender, System.EventArgs e) { int ID1=int.Parse(textBox2.Text); int ID2=int.Parse(textBox3.Text); Set[ID1]=SetIntersection(Set[ID1],Set[ID2]); 表示(); } // S1とS2の差集合 private int[] SetDifference(int[] S1,int[] S2) { int[] S = new int [ ]{ }; foreach (int EL in S1) if(!SetMember(EL,S2)) S = AddMember(EL,S); return S; } private void button7_Click(object sender, System.EventArgs e) { int ID1=int.Parse(textBox2.Text); int ID2=int.Parse(textBox3.Text); Set[ID1]=SetDifference(Set[ID1],Set[ID2]); 表示(); } |