All pastes #2057207 Raw Edit

Miscellany

public c v1 · immutable
#2057207 ·published 2011-05-12 06:22 UTC
rendered paste body
/* Lab - 6 */domains		E = string*	T = string	I = integer	predicates	/* Принадлежность */	add_bel(T)		belong(T,E)			/* Замена */	/* Нихера не работает, сука >.< */	add_chg(T,T)	change(T,T,E,E)		/* Первый и последний элементы */	first(E)		last(E)				/* Конкатенация */	add_con(E)			concatn(E,E,E)			/* Добавление элемента в список */	add_add(T)		add(T,E,E)		/* Удаление элемента из списка */	add_del(T)		del(E,T,E)			/* Обращение списка */	reverse(E,E)		/* Включение подсписка в список */	add_sub(E)	sublist(E,E)		/* Длина списка */	length(E,I)		add_len(I)			/* Номер элемента списка */	add_ind(T)		index(T,I,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"):-		add_chg(X,Y), change(X,Y,Str,Str1),		write("\n\nРезультат:\n",Str1),		readln(Pps),menu(Str1,_),!.	action(Str,"4"):-		first(Str), readln(P),		menu(Str,_),!.	action(Str,"5"):-		last(Str), readln(P),		menu(Str,_),!.	action(Str,"6"):-		write("\n\nВведите второй список\n"),		write("(Точка = стоп)\n"),		add_con(Str1), concatn(Str,Str1,[H|T]),		List = [H|T], write("\n\nНовый список:\n",List),		readln(Ppt), menu(List,_),!.	action(Str,"7"):-		add_add(S), add(S,Str,Str1), 		readln(Ppt), menu(Str1,_),!.	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,Str1), 		write("\n\nОбращённый список:\n",Str1),		readln(Poq), menu(Str1,_),!.	action(Str,"10"):-		write("\n\nВведите подсписок\n"),		add_sub(Str1), sublist(Str1,Str), 		readln(Vrp), menu(Str,_),!.	action(Str,"11"):-		length(Str,N), add_len(N), menu(Str,_),!.	action(Str,"12"):-		add_ind(S), index(S,1,Str), 		readln(Nns), menu(Str,_),!.	action([],"13").			/* Просмотр списка */	viever(Str):-		write("\n\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"). 		/* Замена элемента */	/* Гдеее Эта Долбаная Ошибка?!?!?!?! */	add_chg(X,Y):-			write("\n\nВвод заменяемого элемента: "), readln(X),		write("\n\nВвод элемента: "), readln(Y).	change(X,Y,[X|T],[Y|T1]):-		change(X,Y,T,T1).	change(X,Y,[M|T],[M|T1]):-		change(X,Y,T,T1).	change(_,_,[],[]).		/* Процедура нахождения первого элемента списка */	first([H|T]):-		write("\n\nПервый элемент: "), 		write(H).		/* Процедура нахождения последнего элемента */	last([H|[]]):-		write("\n\nПоследний элемент: ", H).	last([_|T]):-		last(T).		/* Конкатенация */	add_con([H|T]):-		write("Ввод: "), readln(H), 		H <> "." ,!, add_con(T).	add_con([]).	concatn([],L,L).	concatn([H|L1],Str1,[H|L3]):-		concatn(L1,Str1,L3).		/* Процедура добавления элемента в список */	add_add(S):-		write("\n\nВведите элемент: "),		readln(S).	add(S,Str,Str1):-		Str1 = [S|Str],		write("\n\nНовый список:\n",Str1).				/* Удаление элемента из списка */	add_del(X):-		write("\n\nВведите элемент: "),		readln(X).	del([X|T],X,L):-		del(T,X,L).	del([H|T],X,[H|L]):-		X<>H,		del(T,X,L).	del([],_,[]).		/* Обращение списка */ 	reverse([],[]).	reverse([H|T],L):-		reverse(T,Z),		concatn(Z,[H],L).		/* Подсписок списка(включения множеств) */	add_sub([H|T]):-		write("Ввод: "), readln(H), 		H <> "." ,!, add_sub(T).	add_sub([]).	sublist(Str1,Str):-		concatn(_,X,Str),		concatn(Str1,_,X),		write("\n\n",Str1,"\nподсписок списка\n",Str),!.	sublist(Str1,Str):-		write("\n\n",Str1,"\nНе входит в область\n",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). 		/* Определение индекса элемента */	add_ind(S):-		write("\n\nВведите элемент списка: "),		readln(S).	index(S,X,[H|T]):-		H<>S, Z=X+1,		index(S,Z,T).	index(S,X,[S|_]):-		write("\n\nЭлемент: ",S,"\nИндекс: ",X),!.	index(S,_,[]):-		write("\n\nЭлемента ",S," в списке нет").