All pastes #2053974 Raw Edit

Miscellany

public c v1 · immutable
#2053974 ·published 2011-05-04 21:04 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)			% последний	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).