
Постановка задачи на программирование
Задача
Выполнение операций над множествами
Исходные данные:
Два множества (числовые или символьные) вводятся в графическом диалоге.
Алгоритм:
При нажатии кнопки выбора операции производится сравнение двух матриц, при этом повторяющиеся символы удаляются.
Вывод:
Результаты представлены в графической форме – в виде диаграммы Эйлера-Венна, символы вписываются в соответствующие места на диаграмме.
Описание разработанного объекта
Для работы с множествами используется класс Form1, который включает в себя следующие методы:
public string sim_raz(string str1, string str2)
public string raz(string str1, string str2)
public string ob(string str1, string str2)
public string per(string str1, string str2)
private void _drawGraph(Graphics g)
Данные методы реализуют непосредственно операции над множествами, а последний – рисование диаграммы и расположением на нем символов.
Интерфейс программы
Интерфейс программы приведен на рис.2.1.
Рисунок 2.1 – Интерфейс программы
Дружественный графический интерфейс моей программы ориентирован на то, чтобы пользователь сразу видел результат работы операции максимально наглядно.
Интерфейс состоит из:
- два объекта textBox для ввода множеств (символьных или числовых);
-четыре кнопки radioButton для выбора необходимой операции;
-объект pictureBox наглядной демонстрации диаграммы Эйлера-Венна.
ЗАКЛЮЧЕНИЕ
В результате проделанной работы мы рассмотрели теоретические основы теории множеств, чтобы понимать как должны выполнятся операции над множествами.
Разработана программа на языке C# (C sharp) в среде Microsoft Visual Studio 2010, позволяющая выполнить поставленную задачу.
Разработанная программа позволяет выполнить четыре операции над множествами: объединение, пересечение, разность, симметрическая разность. Множества – любые символьные массивы, набранных вручную через интерфейс с использованием мыши и клавиатуры.
Приложение 1
(Код программы)
public partial class Form1 : Form
{
private string[] images = { "0.png", "1.png", "2.png", "3.png" };
public Form1()
{
InitializeComponent();
}
public string sim_raz(string str1, string str2)
{
int count = 0;
string str3 = "";
string s1 = new string(str1.ToCharArray().Distinct().ToArray());
string s2 = new string(str2.ToCharArray().Distinct().ToArray());
for (int j = 0; j < s1.Length; j++)
{
for (int i = 0; i < s2.Length; i++)
{
if (s1[j] == s2[i]) count++;
}
if (count == 0) str3 += s1[j];
else count = 0;
}
for (int j = 0; j < s2.Length; j++)
{
for (int i = 0; i < s1.Length; i++)
{
if (s1[j] == s2[i]) count++;
}
if (count == 0) str3 += s1[j];
else count = 0;
}
return str3;
}
public string raz(string str1, string str2)
{
int count = 0;
string str3 = string.Empty;
string s1 = new string(str1.ToCharArray().Distinct().ToArray());
string s2 = new string(str2.ToCharArray().Distinct().ToArray());
for (int j = 0; j < s1.Length; j++)
{
for (int i = 0; i < s2.Length; i++)
{
if (s1[j] == s2[i]) count++;
}
if (count == 0) str3 += s1[j];
else count = 0;
}
return str3;
}
public string ob(string str1, string str2)
{
int count = 0;
string s1 = new string(str1.ToCharArray().Distinct().ToArray());
string s2 = new string(str2.ToCharArray().Distinct().ToArray());
for (int j = 0; j < s2.Length; j++)
{
for (int i = 0; i < s1.Length; i++)
{
if (s2[j] == s1[i]) count++;
}
if (count == 0) s1 += s2[j];
else count = 0;
}
return s1;
}
public string per(string str1, string str2) // пересечение
{
string str3 = "";
string s1 = new string(str1.ToCharArray().Distinct().ToArray());
string s2 = new string(str2.ToCharArray().Distinct().ToArray());
for (int j = 0; j < s2.Length; j++)
{
for (int i = 0; i < s1.Length; i++)
{
if (s2[j] == s1[i])
str3 += s2[j];
}
}
return str3;
}
private void _drawGraph(Graphics g)
{
// int count = 1;
string abs = raz(textBox1.Text, textBox2.Text);
abs = abs.Replace(" ", "");
int spacePos = 1;
int strLen = abs.Length;
for (int i = 0; i < strLen; ++i, spacePos += 2)
{
abs = abs.Insert(spacePos, " ");
}
string s = new string(abs.ToCharArray().Distinct().ToArray());
g.DrawString(s, new Font("Times New Roman", 24), Brushes.Red, new RectangleF(150, 150, 245, 300));
abs = per(textBox1.Text, textBox2.Text);
abs = abs.Replace(" ", "");
spacePos = 1;
strLen = abs.Length;
for (int i = 0; i < strLen; ++i, spacePos += 2)
{
abs = abs.Insert(spacePos, " ");
}
g.DrawString(abs, new Font("Times New Roman", 24), Brushes.Red, new RectangleF(425, 150, 100, 300));
abs = raz(textBox2.Text, textBox1.Text);
abs = abs.Replace(" ", "");
spacePos = 1;
strLen = abs.Length;
for (int i = 0; i < strLen; ++i, spacePos += 2)
{
abs = abs.Insert(spacePos, " ");
}
g.DrawString(abs, new Font("Times New Roman", 24), Brushes.Red, new RectangleF(600, 150, 245, 300));
}