Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2013, 19:51   #1
igrokk
 
Регистрация: 30.04.2013
Сообщений: 5
Восклицание Prolog

1)Создайте предикат, осуществляющий переписывание из одного файла, содержащего числа, в другой файл только тех чисел, которые являются четными.
Даже нет идей как решать может есть подобное задание у кого-нить?
igrokk вне форума Ответить с цитированием
Старый 01.05.2013, 05:21   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

какой диалект пролога?
rrrFer вне форума Ответить с цитированием
Старый 01.05.2013, 05:36   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

на SWI вот как-то так:
Код:
p:-
	see('in.txt'), tell('out.txt'), pp, seen, told.
pp:-
  peek_char(C), (
    char_type(C, end_of_file), !
    ; read(N), 0 is (N mod 2), write(N), pp
		; pp
	).
во входном файле должны быть записаны термы, подробней тут читай.
rrrFer вне форума Ответить с цитированием
Старый 03.05.2013, 13:36   #4
igrokk
 
Регистрация: 30.04.2013
Сообщений: 5
Восклицание

Можешь помочь пример переделать?
domains
strElement=string
strList=strElement*
intElement=integer
intList=intElement*
predicates
/************************преобразова ние в список*/
separ(string,strlist)
scan (string,strlist,string)
/*********************************** *************/
/******преобразование списка слов в список чисел*/
convertStrListToIntList(strList,int List)
csltil(intList,intList,strElement)
/*********************************** *************/
/*******************дополнение списка квадратами*/
p( intList, intList )
/*********************************** *************/

clauses
/************************преобразова ние в список*/
separ(Str,[T|L]):-
frontchar(Str,S3,S2),
str_char(S5,S3),
scan(S2,[T|L],S5),!.
separ(_,[]).
scan(Str,[T|L],S):-
frontchar(Str,S3,S2),
NOT(S3=' '),
str_char(S5,S3),
concat(S,S5,S1),
scan(S2,[T|L],S1),!.
scan("",[T|L],S):-
T=S,separ("",L).
scan(Str,[T|L],S):-
T=S,frontchar(Str,_,S2),
separ(S2,L),!.
/*********************************** *************/
/******преобразование списка слов в список чисел*/
convertStrListToIntList([],[]):-!.
convertStrListToIntList([HS|TS],LI):-
convertStrListToIntList(TS,TI),
csltil(TI,LI,HS).
csltil(TL,[HI|TL],HS):-
str_int(HS,HI),!.
csltil(TL,TL,_):-!.
/*********************************** *************/
/*******************дополнение списка квадратами*/
p( [], [] ).
p( [H|T], [H|[HH|TT]] ):-
HH = H*H, p(T,TT).
/*********************************** *************/

goal
%S="1 2 3 4 12 asd 24 12",
file_str("input.txt",S),
separ(S,LS),
convertStrListToIntList(LS,IL),
write(IL),nl,
p(IL,RL), write(RL),nl.domains
strElement=string
strList=strElement*
intElement=integer
intList=intElement*
predicates
/************************преобразова ние в список*/
separ(string,strlist)
scan (string,strlist,string)
/*********************************** *************/
/******преобразование списка слов в список чисел*/
convertStrListToIntList(strList,int List)
csltil(intList,intList,strElement)
/*********************************** *************/
/*******************дополнение списка квадратами*/
p( intList, intList )
/*********************************** *************/

clauses
/************************преобразова ние в список*/
separ(Str,[T|L]):-
frontchar(Str,S3,S2),
str_char(S5,S3),
scan(S2,[T|L],S5),!.
separ(_,[]).
scan(Str,[T|L],S):-
frontchar(Str,S3,S2),
NOT(S3=' '),
str_char(S5,S3),
concat(S,S5,S1),
scan(S2,[T|L],S1),!.
scan("",[T|L],S):-
T=S,separ("",L).
scan(Str,[T|L],S):-
T=S,frontchar(Str,_,S2),
separ(S2,L),!.
/*********************************** *************/
/******преобразование списка слов в список чисел*/
convertStrListToIntList([],[]):-!.
convertStrListToIntList([HS|TS],LI):-
convertStrListToIntList(TS,TI),
csltil(TI,LI,HS).
csltil(TL,[HI|TL],HS):-
str_int(HS,HI),!.
csltil(TL,TL,_):-!.
/*********************************** *************/
/*******************дополнение списка квадратами*/
p( [], [] ).
p( [H|T], [H|[HH|TT]] ):-
HH = H*H, p(T,TT). <-------------------------------------------ТУТ ПРАВИЛО НЕ ЗНАЮ КАК ИЗМЕНИТЬ НАДО ЧТОБ ТОЛЬКО ЧЕТНЫЕ ВЫВОДИЛ ЧЕРЕЗ МОД ВРОДЕ.
/*********************************** *************/

goal
%S="1 2 3 4 12 asd 24 12",
file_str("input.txt",S),
separ(S,LS),
convertStrListToIntList(LS,IL),
write(IL),nl,
p(IL,RL), write(RL),nl.
igrokk вне форума Ответить с цитированием
Старый 03.05.2013, 16:10   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

вижу нашел мой код на соседнем форуме )

Код:
p( [], [] ).
p( [H|T], R ):-
0 = (H mod 2), !, p(T,TT), R = [H|TT]; p(T,R).
не проверял.
rrrFer вне форума Ответить с цитированием
Старый 03.05.2013, 19:30   #6
igrokk
 
Регистрация: 30.04.2013
Сообщений: 5
По умолчанию

Спасибо выручил.
igrokk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Prolog ankatito Помощь студентам 6 13.11.2011 20:53
Prolog SeRhy Помощь студентам 0 13.11.2010 17:10
Prolog Darck Angel Софт 0 17.01.2010 20:32
Prolog Debro Помощь студентам 2 26.12.2009 10:16
Prolog @Katushka@ Помощь студентам 0 03.10.2009 22:44