Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Как считывать список из файла?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
prol prol вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.05.2005
По умолчанию Как считывать список из файла? - 09.05.2005, 17:31

Здравствуйте! Прошу помощи. Есть следующая задачка:
определить отношение

разбиениесписка( Список, Список1, Список2)

так, чтобы оно распределяло элементы списка между двумя списками Список1 и Список2 и чтобы эти списки были примерно одинаковой длины. Например:

разбиениесписка( [а, b, с, d, e], [a, с, е], [b, d]).

С этой частью работы проблем нет:
Код:
DOMAINS
List=char*
PREDICATES
razbienie(List,List,List)
CLAUSES
razbienie([X],[X],[]).
razbienie([X,Y|L],[X|L1],[Y|L2]):-razbienie(L,L1,L2).
GOAL
razbienie(['a','b','c','d','e'],X,Y).
А как сделать так, чтобы список считывался из файла, а в ответ выдавал уже обработанный список (Например, из файла считывается список [a,b,c,d,e], а ответ выдавался бы такой: X=[a,c,e], Y=[b,d])? Зараннее благодарю.
Ответить с цитированием
  (#2 (permalink)) Старый
Mnior Mnior вне форума
Member
 
Сообщений: 487
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.12.2002
По умолчанию 09.05.2005, 21:28

Как ни странно, но у ПроЛога с этим лучше всех, есть предикат consult - подымающий данные из текстового файла и save сохраняющий базу в файл. Вот, что тебе надо:
Код:
Domains
    list = integer*
Facts - db
    list(list)
Goal
    consult("data.db", db),
    list(List).
Сам текстовый файл должен существовать (в томже каталоге, или пропиши точный путь) и содержать (без пробелов табов и новых строк) типа:
Код:
list([1,2,3,4,5,6])
Ответить с цитированием
  (#3 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,979
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 10.05.2005, 16:26

prol пишет:
Цитата:
А как сделать так, чтобы список считывался из файла
Mnior предлагает хранить список в файле не в чистом виде, а в виде факта:
Цитата:
list([1,2,3,4,5,6])
А вот как сделать так, чтобы список хранился в виде явного списка [1,2,3,4,5,6]:
Код:
DOMAINS List=char* 
PREDICATES 
razbienie(List,List,List) 
CLAUSES 
razbienie([X,Y|L],[X|L1],[Y|L2]):-razbienie(L,L1,L2). 
razbienie([X],[X],[]). 
GOAL 
file_str("qwe.txt",Строка),
term_str(List,L,Строка),
razbienie(L,X,Y).
Ответить с цитированием
  (#4 (permalink)) Старый
prol prol вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.05.2005
По умолчанию 11.05.2005, 15:01

Всем огромное и человеческое спасибо! Но у меня еще вопрос:
как записать полученные резульаты в файл (другой)?
Ответить с цитированием
  (#5 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,979
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.05.2005, 22:45

Запись производится например так:
Код:
GOAL 
file_str("qwe.txt",Строка), 
term_str(List,L,Строка), 
razbienie(L,X,Y),
term_str(List,X,Строка1), 
file_str("asd.txt",Строка1), 
term_str(List,Y,Строка2),
file_str("zxc.txt",Строка2).
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
prol prol вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.05.2005
По умолчанию 12.05.2005, 07:47

Спасибо (в особености товарищу Винитарху)!!! Все работает.

P.S. Здорово, что еще есть люди, которые могут помочь безвозмездно.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При обработке данные необходимо считывать из существующего файла dudy С/С++ 0 17.05.2011 09:44
Задача по Турбо Прологу. Чтение из файла, преобразование строки в список, запись в БД theoo Prolog 4 08.11.2010 12:05
Как считывать данные из файла Minimbl Java 1 22.02.2010 09:25
Как считывать строку из файла mickey Lisp 1 12.02.2008 11:10
Нужно загрузить содержимое текстового файла в список Lin@ C++ Builder 7 29.06.2007 15:52
Как считывать файлы imported_Nas J2ME 0 27.02.2007 08:48
Открытие файла в список wenom C++ Builder 2 20.02.2007 18:28
Как считывать данные из ini файлов AlexPro81 Delphi 8 05.07.2006 19:37
Посимвольная запись файла в список asult Prolog 5 20.06.2006 17:48
Как считывать переменные? kminas Visual Basic 10 15.02.2006 00:34
FreeBSD и RS-232 как считывать данные bdmalex C++ на Unix 3 17.02.2005 13:31
Надо в Delphi из текстового файла случайным образом считывать слова Anonymous Delphi 1 25.06.2003 22:47



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов