Елементи теорії множин


Тема: Множини та операції над ними

Мета: навчитись оперувати множинами, виконувати над ними операції за допомогою засобів ЕОМ.

Завдання

теорія множин елемент

Побудувати матрицю відношення 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++.