Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Взаимодействие PROLOG и NetBeans IDE 7.1.1
Ответ
 
Опции темы Опции просмотра
  (#31 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,961
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 26.10.2017, 23:19

Цитата:
Сообщение от ayax Посмотреть сообщение
При выполнении кода выдаётся следующее:
N = 9
|:
Как надо исправить код ...
После девятки Вы не набрали точку:
N = 9.
Цитата:
Сообщение от ayax Посмотреть сообщение
И из программы перевода чисел -
В приведённом запросе много ошибок. Имена переменных из двух предикатов смешали. Надо так:
prolog Код:
:- Arab is 3497, arab_rim(Arab, Rim), write(" Arab = "), write(Arab), write(" ===> "),
                                      write(" Rim = " ), write(Rim), nl,
   Rim1 is "XX",  rim_arab(Rim1, Arab1), write(" Rim = " ), write(Rim1),  write(" ===> "),
                                      write(" Arab = "), write(Arab1), nl, halt.
Ответить с цитированием
  (#32 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 27.10.2017, 21:46

Винитарх, всё равно -

Arab = 3497 ===> Rim = MMMCDXCVII
ERROR: c:/prolog/helloworld/src/rimarab.pl:23:
is/2: Type error: `[]' expected, found `"XX"' (a string) ("x" must hold one character)
Warning: c:/prolog/helloworld/src/rimarab.pl:23:

prolog Код:
:- Arab is 3497, arab_rim(Arab, Rim),   write(" Arab = "), write(Arab), write(" ===> "),
                                      write(" Rim = " ), write(Rim), nl,
   Rim1 is "XX",  rim_arab(Rim1, Arab1), write(" Rim = " ), write(Rim1),  write(" ===> "),
                                      write(" Arab = "), write(Arab1), nl, halt.
Ответить с цитированием
  (#33 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,961
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 27.10.2017, 22:14

prolog Код:
:-Arab is 3497, arab_rim(Arab, Rim),   write(' Arab = '), write(Arab), write(' ===> '),
                                      %write(' Rim = ' ), write(Rim), nl,
   Rim1 = 'XX',  rim_arab(Rim1, Arab1), write(' Rim = ' ), write(Rim1),  write(' ===> '),
                                      write(' Arab = '), write(Arab1), nl, halt.
Ответить с цитированием
  (#34 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 08.04.2018, 21:59

Винитарх, надеюсь, что перенос вопроса из темы о Io, побудит Вас ответить на него! Заранее спасибо.

Винитарх, убедительная просьба популярно объяснить что происходит в строке
prolog Код:
рим_араб(R,0):- string_to_atom(R,''),!.
и, конкретно, что делает предикат string_to_atom()
Ответить с цитированием
  (#35 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,961
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 09.04.2018, 01:38

Цитата:
Сообщение от ayax Посмотреть сообщение
перенос вопроса из темы о Io, побудит Вас ответить на него!
Что за вопрос?

Цитата:
Сообщение от ayax Посмотреть сообщение
Винитарх, убедительная просьба популярно объяснить что происходит в строке
prolog Код:
рим_араб(R,0):- string_to_atom(R,''),!.
Предикат string_to_atom(R,'') возвращает пустую строку "", когда символы римского числа закончились. Т.е. когда разбор римского числа по символам закончился, то возвращаем в рекурсию ноль. Эта строчка стёб! Можно и без string_to_atom:
prolog Код:
rim_arab(R,A):- (zamena(A1,R1,2),string_concat(R1,R2,R);
                 zamena(A1,R1,1),string_concat(R1,R2,R)),!,
                 rim_arab(R2,A2), A is A1+A2.
rim_arab(_,0).
Ответить с цитированием
Ads.
  (#36 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 10.04.2018, 12:54

Почему зависает NetBeans я не знаю и с ним никогда не работал.
Весьма жаль, но всё же попробую задать вопрос:
prolog Код:
%fibonachi_1.pro
main:-
fib(0, 0). fib(1, 1). fib(2, 1).
fib(N, F):-
  N > 2,
  N1 is N - 1, N2 is N - 2,
  fib(N1, F1),  fib(N2, F2),
  F is F1 + F2.
main:- write(" N = "), read(N), nl,
       write(" N = "), write(N), write(" ===> "),
       fib(N, F), write(" fib = "), write(F), nl, halt.
Output of running "C:\Program Files\swipl\bin\swipl.exe" -c C:\PROLOG\helloWorld\src\fibonachi_1.pro is:

Warning: c:/prolog/helloworld/src/fibonachi_1.pro:9:
Clauses of main/0 are not together in the source-file
Earlier definition at c:/prolog/helloworld/src/fibonachi_1.pro:2
Current predicate: fib/2
Use :- discontiguous main/0. to suppress this message
% autoloading prolog_codewalk:must_be/2 from c:/program files/swipl/library/error
.................................................. ..........................................

Что может значить такое сообщение и как надо исправить код ...
Ответить с цитированием
Ads
  (#37 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,961
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 10.04.2018, 19:31

Вторая строчка (maun:-) лишняя. Уберите её.

В сообщении об ошибке Вам было сказано, что клозы предиката main должны быть вместе, т.е. сгруппированы.
Ответить с цитированием
  (#38 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 11.04.2018, 21:34

Получилось следующее (извиняюсь за "простыню"):

Output of running "C:\Program Files\swipl\bin\swipl.exe" -c C:\PROLOG\helloWorld\src\fibonachi_1.pro is:

% autoloading prolog_codewalk:must_be/2 from c:/program files/swipl/library/error
% autoloading prolog_debug:backtrace/1 from c:/program files/swipl/library/prolog_stack
% autoloading qsave:current_foreign_library/2 from c:/program files/swipl/library/shlib
% autoloading error:assertion/1 from c:/program files/swipl/library/debug
% autoloading prolog_source:directory_file_path/3 from c:/program files/swipl/library/filesex
% autoloading files_ex:use_foreign_library/2 from c:/program files/swipl/library/shlib
% autoloading prolog_codewalk:portray_clause/1 from c:/program files/swipl/library/listing
% autoloading prolog_codewalk:clause_info/4 from c:/program files/swipl/library/prolog_clause
% autoloading prolog_codewalk:initialization_layout/4 from c:/program files/swipl/library/prolog_clause
% autoloading record:member/2 from c:/program files/swipl/library/lists
% autoloading oset:reverse/2 from c:/program files/swipl/library/lists
% autoloading prolog_codewalk:clause_name/2 from c:/program files/swipl/library/prolog_clause
% Autoloader: iteration 1 resolved 11 predicates and loaded 12 files in 0.340 seconds. Restarting ...
% autoloading files_ex:maplist/2 from c:/program files/swipl/library/apply
% autoloading files_ex:permission_error/3 from c:/program files/swipl/library/error
% Autoloader: loaded 11 files in 2 iterations in 0.461 seconds
Ответить с цитированием
  (#39 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 12.04.2018, 04:05

Добавьте в файл
prolog Код:
:- initialization(main).
Ответить с цитированием
  (#40 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 16.04.2018, 23:48

Увы, у меня ничего не получилось ...
Ответить с цитированием
  (#41 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 17.04.2018, 07:54

У меня работает однако
Выкладывайте код и сообщения
Ответить с цитированием
  (#42 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 28.04.2018, 00:31

prolog Код:
%fibonachi_1.pro
%:- initialization(main). №1
fib(0, 0). fib(1, 1). fib(2, 1).
fib(N, F):-
  N > 2,
  N1 is N - 1, N2 is N - 2,
  fib(N1, F1), fib(N2, F2),
  F is F1 + F2.
%--------------------------------------------------------
%:- initialization(main). №2
%initialization(main):- write(" N = "), read(N), nl, ... №4
main:- write(" N = "), read(N), nl,
       write(" N = "), write(N), write(" ===> "),
       fib(N, F), write(" fib = "), write(F), nl, halt.
%initialization(main). №5
%:- initialization(main). №3
При №1 или №2 или №3 NetBeans намертво зависает ...
При №4 или №5 выводится следующее:

Output of running "C:\Program Files\swipl\bin\swipl.exe" -c C:\PROLOG\helloWorld\src\fibonachi_1.pro is:

ERROR: c:/prolog/helloworld/src/fibonachi_1.pro:15:
No permission to modify static procedure `(initialization)/1'
Defined at c:/program files/swipl/boot/toplevel.pl:186
% autoloading prolog_codewalk:must_be/2 from c:/program files/swipl/library/error
% autoloading prolog_debug:backtrace/1 from c:/program files/swipl/library/prolog_stack
% autoloading qsave:current_foreign_library/2 from c:/program files/swipl/library/shlib
% autoloading error:assertion/1 from c:/program files/swipl/library/debug
% autoloading prolog_source:directory_file_path/3 from c:/program files/swipl/library/filesex
% autoloading files_ex:use_foreign_library/2 from c:/program files/swipl/library/shlib
% autoloading prolog_codewalk:portray_clause/1 from c:/program files/swipl/library/listing
% autoloading prolog_codewalk:clause_info/4 from c:/program files/swipl/library/prolog_clause
% autoloading prolog_codewalk:initialization_layout/4 from c:/program files/swipl/library/prolog_clause
% autoloading record:member/2 from c:/program files/swipl/library/lists
% autoloading oset:reverse/2 from c:/program files/swipl/library/lists
% autoloading prolog_codewalk:clause_name/2 from c:/program files/swipl/library/prolog_clause
% Autoloader: iteration 1 resolved 11 predicates and loaded 12 files in 0.310 seconds. Restarting ...
% autoloading files_ex:maplist/2 from c:/program files/swipl/library/apply
% autoloading files_ex:permission_error/3 from c:/program files/swipl/library/error
% Autoloader: loaded 11 files in 2 iterations in 0.421 seconds

Ответить с цитированием
  (#43 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 28.04.2018, 17:11

Попробуйте для начала обойтись без read() - подозреваю, что Ваша задача просто висит в фоне, ожидая ввода, уж не знаю, куда там NetBeans перенаправляет стандартный ввод.

И, если честно, удивляет "шаманский" подход.. Вы хоть понимаете разницу между подходами №1, №2, №3 и, с другой стороны, №4, №5? Чего Вас туда понесло?
Ответить с цитированием
  (#44 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 28.04.2018, 23:52

Цитата:
Сообщение от Alexiski Посмотреть сообщение
И, если честно, удивляет "шаманский" подход...
Знаете, он меня сам иногда "удивляет" (я как то сам понимаю, что если ничего не получается, надо наконец прочесть инструкцию ...), но, иногда,
бывает, что таким образом узнаешь такие "приятные" особенности языка ...
Ответить с цитированием
  (#45 (permalink)) Старый
ayax ayax вне форума
Member
 
Сообщений: 63
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.08.2016
По умолчанию 30.08.2018, 06:30

Alexiski , есть одна вещь про которую надо было, наверное, сообщить уже давно, но я сам только что обратил на неё внимание!
Дело в том, что, кроме PROLOG у меня установлены Tcl и Python ...
И дело в том, что, "значки" проектов совпадают со "значками" файлов.
А в случае с PROLOGом проект "показан" как Java, и надпись при наведении указателя -"проект Java в C:\PROLOG\helloWorld" ...
Ответить с цитированием
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка NetBeans Tenass Java 0 19.03.2016 18:56
Проблема установки Sun Java ME SDK 3.0 и NetBeans 7.0.1 X-Cite_Forever Java 5 10.10.2011 11:02
Вызов EJB из модуля NetBeans Niko1ay Java 0 05.10.2011 11:29
Книги Монахова Вадима по Java и среда NetBeans. turtles Java 1 23.09.2011 21:14
Редактор SVG-интерфейсов для j2me-миделтов в NetBeans kivi-kivi J2ME 0 22.09.2011 18:23
Суммирование матриц в NetBeans как реализовать katja317 Java 1 10.06.2011 13:17
Написание программы с географическими координатами на Jave.NetBeans IDE 6.9.1 Lenk Вопросы начинающих программистов 0 12.12.2010 18:44
NetBeans как установить правильно Areostar Java 4 12.10.2009 11:55
взаимодействие swi-prolog с ini-файлами toshkaexe Prolog 0 14.03.2008 14:29
Взаимодействие dll и dll библиотек mark_skif C++ Builder 1 09.09.2005 21:06
BPL-модули и их взаимодействие perunir C++ Builder 0 02.03.2005 17:31
Межпроцессное взаимодействие c++ С/С++ 2 01.03.2005 15:46



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