#prolog #eclipse-clp
#пролог #eclipse-clp
Вопрос:
Какое значение должно быть записано для правильного запуска кода. Я даю любую сумму, я не вижу никаких выходных данных.
f(T, Y) :-Y is sqrt(abs(T)) 5*T^3.
main :-
read(As),
length(As, N), reverse(As , Rs),
( foreach(Ai , Rs), for(I, N - 1, 0, -1) do
Bi is f(Ai),
( Bi > 400 -> printf("%w TOO LARGEn", I)
;
printf("%w %wn", [I, Bi])
)
).
Ответ №1:
Ваша программа работает нормально. Может быть, вы забыли завершить ввод данных с помощью полной остановки / периода?
[eclipse 2]: main. % Invoke 'main' from the ECLiPSe prompt.
[3,7,5,2]. % Input the list, terminate with fullstop.
выдает этот вывод
3 41.4142135623731
2 TOO LARGE
1 TOO LARGE
0 136.732050807569
Yes (0.00s cpu)
Помните, что если вы используете один из примитивов, которые читают термины в синтаксисе Prolog (read/1,2, read_term/1,2 и т.д.), Каждый термин должен завершаться полной остановкой (хотя ECLiPSe также принимает end-of-file ).
Кстати, вместо использования read/1 обычно вы просто передаете данные в качестве аргумента. Если вы измените свой код таким образом, вы можете просто вызвать main([3,7,5,2]).