/// <summary> /// Переопределение базового сравнения /// </summary> /// <param name="obj">Объект для сравнения с текущим</param> /// <returns>true если равны false иначе</returns> public override bool Equals(System.Object obj) { Element_Fuzzy_sets <Tip_Element> p = obj as Element_Fuzzy_sets <Tip_Element>; if ((System.Object)p == null || obj == null) { return(false); } return((Element.CompareTo(p.Element) == 0) && (Accessory_Function == p.Accessory_Function)); }
/// <summary> /// Удаляет из нечёткого множества указанный элемент. /// </summary> /// <param name="Element">Элемент нечёткого множества</param> public void Delete(Element_Fuzzy_sets <Tip_Element> Element) { if (Mass == null)//если множество не объявлено, объявляем его { Mass = new List <Element_Fuzzy_sets <Tip_Element> >(); } if (Mass.Contains(Element)) //если такого элемента еще в множестве нету { Mass.Remove(Element); //добавляем элемент } }
/// <summary> /// Сортировка нечёткого множества по значению функции принадлежности элемента множеству /// </summary> /// <param name="A">Нечёткое множество</param> /// <param name="low">Начальный элемент</param> /// <param name="high">Конечный элемент</param> public static Fuzzy_sets <Tip_Element> qSort_from_Accessory_Function(Fuzzy_sets <Tip_Element> A, int low = 0, int high = 0) { int i = low; int j = high; Element_Fuzzy_sets <Tip_Element> x = A[(low + high) / 2]; // x - опорный элемент посредине между low и high do { while (A[i].Accessory_Function < x.Accessory_Function) { ++i; // поиск элемента для переноса в старшую часть } while (A[j].Accessory_Function > x.Accessory_Function) { --j; // поиск элемента для переноса в младшую часть } if (i <= j) { // обмен элементов местами: Element_Fuzzy_sets <Tip_Element> temp = A[i]; A[i] = A[j]; A[j] = temp; // переход к следующим элементам: i++; j--; } } while (i < j); if (low < j) { qSort_from_Accessory_Function(A, low, j); } if (i < high) { qSort_from_Accessory_Function(A, i, high); } return(A); }