// データ宣言
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]);
表示();
} |