All pastes #2056368 Raw Edit

Someone

public c v1 · immutable
#2056368 ·published 2011-05-10 17:36 UTC
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,I)		% последний	concatn(E)		% конкатенация	add(E)			% добавить		add_del(T)		% вспомогательная процедура (готово)	del(E,T,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,N), menu(Str,_),!.	action(Str,"6"):-		concatn(Str), menu(Str,_),!.	action(Str,"7"):-		add(Str), menu(Str,_),!.	action(Str,"8"):-		add_del(X), del(Str,X,Str1), 		write("\n\nУдалённый элемент: ",X,"\n\n"),		readln(Pps), menu(Str1,_),!.	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",El," - Принадлежит списку\n\n"),!.	belong(El,[_|T]):-		belong(El,T),!.	belong(El,[_|[]]):-		write("\n\n",El," - Не принадлежит списку\n\n"). /* косяк, рекурсивно выводит значения */		change(Str).		first([H|T]):-		write("\n\n"), write(H),		write("\n\n"), readln(P).		last([_|T],N).		/*write("\n\n"),		last(T,TailLength),		N=TailLength + 1.*/		concatn(Str).		add([H1|T1]).		/*write("Ввод: "), readln(H1), 		H1 <> "." ,!, add(T1).*/		add_del(X):-		write("\n\nВведите элемент: "),		readln(X).	del([X|T],X,L).		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).