Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FEDERAL_NOE_AGENTSTVO_PO_OBRAZOVANIYu.doc
Скачиваний:
5
Добавлен:
17.09.2019
Размер:
1.06 Mб
Скачать

1.4.Список использованных источников

  1. База знаний кафедры ИКТ (ЭВА) МИЭМ, лекция 3-Методы построения деревьев решений. ― Режим доступа: http://wiki.auditory.ru/Лекция_3_-_Методы_построения_деревьев_решений

  2. Симонова Е.В. Курс лекций «Информационные технологии». – СГАУ.

  3. Справочник по C#.― Режим доступа:msdn.microsoft.com

1.5.Приложения

Приложение А. Класс «Узел дерева решений»

public class TreeNode// Класс «Узел дерева решений»

{

public string question; //Информационное поле узла

public TreeNode yes; //Ссылканалевогопотомкаузла

public TreeNode no; //Ссылка на правого потомка узла

[XmlIgnore]//Запрет на сериализацию свойства Yes

public TreeNode Yes

{

get { return yes; }

set { yes = value; }

}

[XmlIgnore]//Запрет на сериализацию свойства No

public TreeNode No

{

get { return no; }

set { no = value; }

}

[XmlIgnore]//Запрет на сериализацию свойства isAnswer

public bool isAnswer//Проверка, является ли ответом

{

get

{

return (yes == null)&&(no == null);

}

}

[XmlIgnore]//Запрет на сериализацию свойства Question

public string Question

{

get { return question; }

set { question = value; }

}

public TreeNode()//Конструктор без параметров

{

yes = null;

no = null;

}

public TreeNode( string question)//Конструктор с одним параметром

{

Question= question;

}

public TreeNode(string question, TreeNode yes, TreeNode no)

{ //Конструктор с двумя

Question = question; //параметрами

Yes = yes;

No = no;

}

}

Приложение В. Класс «Дерево решений»

[XmlRootAttribute("SolutionTree", IsNullable = false)] //Корневой элемент

public class SolutionTree //Класс «Дереворешений»

{

public TreeNode root; //Ссылка на корневой узел

[XmlIgnore]//Запрет на сериализацию поля current

public TreeNode current;//Ссылка на текущий узел

[XmlIgnore]//Запрет на сериализацию поля prev

public TreeNode prev; //Ссылка на узел, расположенный уровнем выше

[XmlIgnore]//Запрет на сериализацию свойства Root

public TreeNode Root

{

get { return root; }

set { root = value; }

}

public SolutionTree() //Конструктор без параметров

{

root = null;

current = null;

prev = null;

}

public void Save(string filename)//Метод сохранения нового узла в ХML-файл

{

File.Delete(filename);//Удаление старого файла

XmlSerializer serializer = new XmlSerializer(typeof(SolutionTree));//Создает XML-объект

TextWriter writer = new StreamWriter(filename,false);//Открывается файл для записи

serializer.Serialize(writer, this);//Сериализация; this-ссылка на сохраняемый объект

writer.Close();//Закрытие файла

}

public static SolutionTree Open(string filename) //Метод для чтения из файла

{

SolutionTree st;

try

{

XmlSerializer serializer = new XmlSerializer(typeof(SolutionTree));

FileStream fs = newFileStream(filename,

FileMode.Open); //Открывается поток для чтения

st = (SolutionTree)serializer.Deserialize(fs);

fs.Close();

}

catch//Исключение, возникшее при открытии пустого файла

{

st = new SolutionTree();//Создание дерева с корнем и двумя потомками

st.Root = new TreeNode("Это человек");

st.Root.Yes = new TreeNode("Гарри Поттер");

st.Root.No = new TreeNode("Лошадь");

}

return st; //Возвращается прочитанный объект

}

public void P(TreeNode root, int x, int y, Font f, Graphics g)//Метод рисования узлов дерева

{

Pen p = new Pen(Color.Black);//Создание нового объекта «Карандаш»

Brush b = Brushes.Black;//Создание нового объекта «Заливка»

if (root.Question.ToString().Length> 15)//Проверка на длину инф. поля узла

{

string s;

int i = 0;

int j = 0;

string[] m = root.Question.ToString().Split(' '); //Преобразование инф. полей узлов в массив строк

while (i < m.Length)

{

s = m[i];

i++;

while ((i < m.Length) && ((s.Length + m[i].Length) < 15))

{

s +=" "+ m[i];

i++;

}

g.DrawString(s, f, b, x, y + (10 * j)); //Рисование строки

j++;

}

}

else

{

g.DrawString(root.Question.ToString(), f, b, x, y);

}

}

public void R (TreeNode root, int n, ref int x, Font f, Graphics g, ref int k)//Перебор узлов дерева и перемещение их в метод P

{

if (root != null)

{

R(root.Yes, n + 1, ref x, f, g, ref k);

P(root, x, 80 * n, f, g);

x = x + 40;

R(root.No, n + 1, ref x, f, g, ref k);

}

else

{

x = x + 20;

}

if (k < x) { k = x; }

}

public void L(ref int k, TreeNoderoot)//Метод установки длины скроллера

{

if (root != null)

{

L(ref k, root.Yes);

k = k + 40;

L(ref k, root.No);

}

else

{

k = k + 20;

}

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]