rendered paste body/* Lab - 6 */domains E = string* T = string I = integer predicates add_bel(T) % вспомогательная процедура belong(T,E) % принадлеждность change(E) % заменить first(E) % первый last(E) % последний concatn(E) % конкатенация add(E) % добавить del(E) % удалить reverse(E) % реверсия sublist(E) % подсписок length(E,I) % длина списка add_len(I) % вспомогательная процедура index(E) % индекс элемента viever(E) % просмотр enter_list(E) % ввод menu(E,T) % меню action(E,T) % действия program. % программаgoal program. /* santa */clauses program:- write("\nВведите список\n(точка = прерывание)\n---\n"), enter_list(Str), menu(Str,Txt). enter_list([H|T]):- write("Ввод: "), readln(H), H <> "." ,!, enter_list(T). enter_list([]). menu(Str,Txt):- write("1.Просмотр\n2.Принадлежит\n3.Заменить\n"), write("4.Первый\n5.Последний\n6.Конкатенация\n"), write("7.Добавление\n8.Удаление\n9.Реверсия\n"), write("10.Подсписок\n11.Длина списка\n12.Индекс\n"), write("13.Выход\n-----\nВведите значение: "), readln(Txt), action(Str,Txt). action(Str,"1"):- viever(Str), menu(Str,_),!. action(Str,"2"):- add_bel(El), belong(El,Str), readln(P), menu(Str,_),!. action(Str,"3"):- change(Str), menu(Str,_),!. action(Str,"4"):- first(Str), menu(Str,_),!. action(Str,"5"):- last(Str), menu(Str,_),!. action(Str,"6"):- concatn(Str), menu(Str,_),!. action(Str,"7"):- add(Str), menu(Str,_),!. action(Str,"8"):- del(Str), menu(Str,_),!. action(Str,"9"):- reverse(Str), menu(Str,_),!. action(Str,"10"):- sublist(Str), menu(Str,_),!. action(Str,"11"):- length(Str,N), add_len(N), menu(Str,_),!. action(Str,"12"):- index(Str), menu(Str,_),!. viever(Str):- write("\n\n"), write(Str), write("\n\n"), readln(N), write("\n\n"). add_bel(El):- write("\n\nВведите символ: "), readln(El). belong(El,[El|_]):- write("\n\nПринадлежит списку\n\n"),!. belong(El,[_|T]):- belong(El,T), write("\n\nПринадлежит списку\n\n"),!. belong(El,Str):- write("\n\nНе принадлежит списку\n\n"). /* косяк, рекурсивно выводит значение */ change(Str). first(Str). last(Str). concatn(Str). add(Str). del(Str). reverse(Str). sublist(Str). length([],0). length([_|T],N):- length(T,TailLength), N=TailLength + 1. add_len(N):- write("\n\nДлина списка: "), write(N), write("\n\n"), readln(P). index(Str).