Елементи теорії множин
Тема: Множини та операції над ними
Мета: навчитись оперувати множинами, виконувати над ними операції за допомогою засобів ЕОМ.
Завдання
теорія множин елемент
Побудувати матрицю відношення R=[(a,b),(a,e),(b,d),(d,e),(e,d)], заданого на множині [a,b,c,d,e].
Відповідь:

Код програми:
private void button2_Click(object sender, EventArgs e)
{
//основні та допоміжні змінні
byte[] t = new byte[256]; //буфер зчитування
Stek mass1 = new Stek(); //стек вхідної множини
Stek mass2 = new Stek(); //стек результатів
string s2;
//задати шлях до директорії виведення
FolderBrowserDialog folder = new FolderBrowserDialog();
folder.ShowDialog();
//відкрити для зчитування вхідних даних
FileStream fr = File.OpenRead(fileRoad.FileName);
//згенерувати шлях до файла виведення
string roadW = folder.SelectedPath + textBox1.Text + ".txt";
//створити файл для виведення
TextWriter fw = new StreamWriter(roadW);
//пошук першої множини
while (Encoding.ASCII.GetString(t, 0, 1) != "{")
{fr.Read(t, 0, 1);}
//запис першої множини в стек
while (Encoding.ASCII.GetString(t, 0, 1) != "}")
{
s2 = "";
fr.Read(t, 0, 1);
while (Encoding.ASCII.GetString(t, 0, 1) != "," && Encoding.ASCII.GetString(t, 0, 1) != "}")
{
s2=s2+Encoding.ASCII.GetString(t, 0, 1);
fr.Read(t, 0, 1);
}
mass1.add(s2);
}
mass2.newS(mass1.count * mass1.count); //створити стек результатів
//пошук другої множини
while (Encoding.ASCII.GetString(t, 0, 1)!="{")
{fr.Read(t,0,1);}
// побудова матриці відношення
while (Encoding.ASCII.GetString(t, 0, 1) != "}")
{
//пошук наступної пари
while (Encoding.ASCII.GetString(t, 0, 1) != "("&& Encoding.ASCII.GetString(t, 0, 1) != "}")
{
fr.Read(t, 0, 1);
}
if (Encoding.ASCII.GetString(t, 0, 1) != "}")
{
string str1, str2;
//зчитати перший елемент пари
fr.Read(t, 0, 1);
str1 = "";
while (Encoding.ASCII.GetString(t, 0, 1) != ",")
{
str1 = str1 + Encoding.ASCII.GetString(t, 0, 1);
fr.Read(t, 0, 1);
}
int p1;
for (p1 = 1; str1 != mass1.take(p1); p1++)
{}
//зчитати другий елемент пари
str2 = "";
fr.Read(t, 0, 1);
while (Encoding.ASCII.GetString(t, 0, 1) != ")")
{
str2 = str2 + Encoding.ASCII.GetString(t, 0, 1);
fr.Read(t, 0, 1);
}
int p2;
for (p2 = 1; str2 != mass1.take(p2); p2++)
{}
mass2.replase((p1-1)*mass1.count+p2,"1");
}
}
int doz = 0;
string ts = "";
for (int y = 1; y <= mass1.count*mass1.count; y++)
{
ts = ts+mass2.take(y)+" ";
doz++;
if (doz == mass1.count) { doz = 0; fw.WriteLine(ts); ts = ""; }
}
fw.Close();
}
Виконання програми:
Вхідний файл:

Вихідний файл:

Висновок
Я ознайомився з елементами теорії множин, операціями над множинами, властивостями відношень і реалізацію операцій над множинами засобами мови C++.