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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 10:42   #1
nastin
 
Регистрация: 20.12.2012
Сообщений: 9
Восклицание Файл(разность первой и последней компоненты файла) турбо пролог

Никак не выходит реализовать задание: дан файл, нужно записать в другой файл разность первой и последней компоненты файла ( разность - это разница "большее" минус "меньшее"). Кое-что написала, но не работает, помогите, пожалуйста!

domains
file = inp;out
predicates
main
first(real)
next(real)
max(real,real)
clauses
main :- openread(inp, "LAB.txt"),
openwrite(out, "LAB1_result.txt"),
readdevice(inp),
writedevice(out),!,
first(_).
first(X):-eof(inp),closefile(inp),closefile(o ut).
first(X):-readreal(X),next(X).
next(X):-not(eof(inp)),readreal(Y),next(Y).
next(X):-eof(inp),max(X,Y).
max(X,Y):-X>Y,closefile(inp),write(X-Y),closefile(out).
max(X,Y):-X=>Y,closefile(inp),write(Y-X),closefile(out).


goal
main.
nastin вне форума Ответить с цитированием
Старый 11.12.2013, 12:47   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

я бы начал со считывания всех компонент файла в список - так проще.
Эту часть можно нагуглить. Если не получится - сообщите, получится - выкладывайте код - найти разницу первого и последнего элемента списка помогу ))
rrrFer вне форума Ответить с цитированием
Старый 11.12.2013, 22:41   #3
nastin
 
Регистрация: 20.12.2012
Сообщений: 9
По умолчанию

Нашла что-то похожее.
И еще хотела просить, разность это ведь не тоже самое, что и разница? Я так понимаю, что сравниваются 2 числа и от большего отнимают меньшее. Спасибо за помощь)

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)
first(intlist,integer)
last(intlist,integer)
minus(integer,integer,integer)

/*------------------------------------------------------------*/

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,_):-!.

Goal

file_str("input.txt",S),
separ(S,LS),
convertStrListToIntList(LS,IL),
write("File contents: "),nl,
write(IL),nl.

Последний раз редактировалось nastin; 11.12.2013 в 22:44.
nastin вне форума Ответить с цитированием
Старый 12.12.2013, 05:28   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

вот, вот. Нашли в интернете мой код на соседнем форуме ))

Список чисел у вас уже есть. последний элемент получаете так:
Код:
last([], _):-!, fail.
last([H], H):-!.
last([_|T], R):-
  last(T, R),!.
Цитата:
Я так понимаю, что сравниваются 2 числа и от большего отнимают меньшее. Спасибо за помощь)
модуль разницы что-ли?

Но если уж очень надо сравнивать - то вот: (это "разность" по вашему описанию)
Код:
p(A, B, R):- A > B, !, R = B - A; R = A - B.
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PROLOG (разность первой и последней компоненты файла) nastin Помощь студентам 1 02.12.2013 20:07
Обработка файла на Турбо Паскаль - Удалить из файла файл вещественных чисел максимальную компоненту chudo*** Паскаль, Turbo Pascal, PascalABC.NET 1 24.12.2011 22:51
Переписать с сохранением порядка следования компоненты файла F1 в файл F2, а компоненты файла F2 - в файл Алексей_1 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2011 13:37
Чтение из типизированного файла с последней записи и до первой vmilyoshin Помощь студентам 7 28.04.2010 15:34