|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.12.2013, 10:42 | #1 |
Регистрация: 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. |
11.12.2013, 12:47 | #2 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
я бы начал со считывания всех компонент файла в список - так проще.
Эту часть можно нагуглить. Если не получится - сообщите, получится - выкладывайте код - найти разницу первого и последнего элемента списка помогу )) |
11.12.2013, 22:41 | #3 |
Регистрация: 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. |
12.12.2013, 05:28 | #4 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
вот, вот. Нашли в интернете мой код на соседнем форуме ))
Список чисел у вас уже есть. последний элемент получаете так: Код:
Цитата:
Но если уж очень надо сравнивать - то вот: (это "разность" по вашему описанию) Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |