elements = new byte[256];
public setCharV(byte[] e, int s)
this.elements = new byte[256];
for (int i = 0; i < s; i++) this.elements[e[i]] = 1;
public setCharV(setCharV m)
this.elements = new byte[256];
for (int i = 0; i < 256; i++)
this.elements[i] = m.elements[i];
while (this.elements[i] == 0) i++;
{ if (this.elements[i] == 1) Console.Write(", {0}", i);
public setCharV Union(setCharV b)
setCharV c = new setCharV();
for (int i = 0; i < 256; i++)
if (this.elements[i] == 1 || b.elements[i] == 1)
{ c.elements[i] = 1; c.size++; } return c;
public setCharV Intersection(setCharV b)
setCharV c = new setCharV();
for (int i = 0; i < 256; i++)
if (this.elements[i] == 1 && b.elements[i] == 1)
{ c.elements[i] = 1; c.size++; } return c;
public setCharV Diff(setCharV b)
setCharV c = new setCharV();
for (int i = 0; i < 256; i++)
if (this.elements[i] == 1 && b.elements[i] == 1)
{ c.elements[i] = 0; c.size--; }
else c.elements[i] = this.elements[i];
public static void Main()
byte[] arr1 = { 1, 2, 3, 5 };
byte[] arr2 = { 1, 2, 3, 7, 8,9 };
setCharV A = new setCharV(arr1, arr1.Length);
setCharV B = new setCharV(arr2, arr2.Length);
Console.WriteLine("Set A");
Console.WriteLine("\nSet B");
Console.WriteLine("\nA U B");
setCharV C = new setCharV();
setCharV D = new setCharV();
Console.WriteLine("\nA n B");
setCharV E = new setCharV();
Console.WriteLine("\nA - B");
setCharV F = new setCharV();
Console.WriteLine("\nB - A");