Теория нечётких множеств, Операции над нечёткими числами, страница 2

подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, "", Eel4, Epr4, Eel5, Epr5, А):!,    подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, "0", Eel4, Epr4, Eel5, Epr5, А).

подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, "", Epr4, Eel5, Epr5, А):str_int(Eel3, El3_int),

El4_int = El3_int + 1,

str_int(Eel4, El4_int),

!,          подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А).

подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, "", Eel5, Epr5, А):!,    подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, "0", Eel5, Epr5, А).

подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, "", Epr5, А):str_int(Eel4, El4_int),

El5_int = El4_int + 1,

str_int(Eel5, El5_int),

!,          подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А).

подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, "", А):!,    подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, "0", А).

подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5,

[нечеткое_число(Эл_1, Пр_1), нечеткое_число(Эл_2, Пр_2), нечеткое_число(Эл_3, Пр_3), нечеткое_число(Эл_4, Пр_4), нечеткое_число(Эл_5, Пр_5)]):str_int(Eel1, Эл_1_инт), str_real(Epr1, Пр_1_реал),

str_int(Eel2, Эл_2_инт), str_real(Epr2, Пр_2_реал),

str_int(Eel3, Эл_3_инт), str_real(Epr3, Пр_3_реал),

str_int(Eel4, Эл_4_инт), str_real(Epr4, Пр_4_реал),

str_int(Eel5, Эл_5_инт), str_real(Epr5, Пр_5_реал),

Эл_1 = Эл_1_инт, Пр_1 = Пр_1_реал,

Эл_2 = Эл_2_инт, Пр_2 = Пр_2_реал,

Эл_3 = Эл_3_инт, Пр_3 = Пр_3_реал,

Эл_4 = Эл_4_инт, Пр_4 = Пр_4_реал,

Эл_5 = Эл_5_инт, Пр_5 = Пр_5_реал,

!.

/*начало***********************/

начало(А, Б, _Win):проверка(А), проверка(Б), реверс(А, [], А_реверс), реверс(Б, [], Б_реверс),

min_max_el(А, Б_реверс, Min),

min_max_el(А_реверс, Б, Max),

Max_1 = Max + 1, разность(А, Б, А, Б, Min, Max_1, -1.0, [], В_реверс), реверс(В_реверс, [], В), число_строка(В, "", Строка), число_слова(В, В, -1.0, Слова),

HWnde_3 = win_GetCtlHandle(_Win, idc_task_e_3),

win_SetText(HWnde_3, Слова),

HWnde_4 = win_GetCtlHandle(_Win, idc_task_e_4),

win_SetText(HWnde_4, Строка),

!.

/*проверка*********************/

проверка(А):проверка_сорт(А), проверка_полноты(А).

/*проверка_сорт****************/

проверка_сорт([_]):!.          проверка_сорт([нечеткое_число(Эл_1, _), нечеткое_число(Эл_2, Пр_2)| А]):Эл_1 < Эл_2,

!, проверка_сорт([нечеткое_число(Эл_2, Пр_2)|А]).

проверка_сорт(_):dlg_Note("Отсортируйте таблицу принадлежности нечеткого числа"),

fail.

/*проверка_полноты*************/

проверка_полноты([_]):!.

проверка_полноты([нечеткое_число(Эл_1, _), нечеткое_число(Эл_2, Пр_2)|А]):Эл_1 + 1 = Эл_2,

!, проверка_полноты([нечеткое_число(Эл_2, Пр_2)|А]).

проверка_полноты(_):dlg_Note("В таблице принадлежности пропущены элементы"),

fail.

/*реверс***********************/

реверс([], А, А):!.

реверс([Эл|А], А_1, А_реверс):!, реверс(А, [Эл|А_1], А_реверс).

/*min_max_el***********************/

min_max_el([нечеткое_число(Эл_1, _)|_], [нечеткое_число(Эл_2, _)|_], Min_Max):Min_Max = Эл_1 - Эл_2.

/*min**************************/

min(Пр_1, Пр_2, Пр_min):Пр_1 <= Пр_2,

Пр_min = Пр_1,

!.

min(_, Пр_2, Пр_2):!.

/*max**************************/

max(Пр_1, Пр_2, Пр_max):Пр_1 >= Пр_2,

Пр_max = Пр_1,

!.

max(_, Пр_2, Пр_2):!.

/*разность*********************/

разность([], [], _, _, Элемент, Элемент, _, В, В).

разность([], [], А, Б, Элемент, Элемент_максимум, Принадлежность, В, В_1):Элемент_1 = Элемент + 1, разность(А, Б, А, Б, Элемент_1, Элемент_максимум, -1.0, [нечеткое_число(Элемент, Принадлежность)|В], В_1).

разность([_|А], [], А_1, Б_1, Элемент, Элемент_максимум, Принадлежность, В, В_1):разность(А, Б_1, А_1, Б_1, Элемент, Элемент_максимум, Принадлежность, В, В_1).

разность([нечеткое_число(Эл_1, Пр_1)|А], [нечеткое_число(Эл_2, Пр_2)|Б], А_1, Б_1, Элемент, Элемент_максимум, Принадлежность, В, В_1):Элемент = Эл_1 - Эл_2,

min(Пр_1, Пр_2, Принадлежность_минимум),

max(Принадлежность, Принадлежность_минимум, Принадлежность_максимум), разность([нечеткое_число(Эл_1, Пр_1)|А], Б, А_1, Б_1, Элемент, Элемент_максимум, Принадлежность_максимум, В, В_1).

разность(А_1, [_|Б_1], А_2, Б_2, Элемент, Элемент_максимум, Принадлежность, В, В_1):разность(А_1, Б_1, А_2, Б_2, Элемент, Элемент_максимум, Принадлежность, В, В_1).

/*число_строка*****************/

число_строка([], Строка, Строка):!.