运行 代码应该正确写入什么值?
What value should be written to run the code correctly?
应该向 运行 代码正确写入什么值。我给了任何数量我没有看到任何输出。
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 LARGE\n", I)
;
printf("%w %w\n", [I, Bi])
)
).
您的程序运行良好。也许您忘记使用 fullstop/period?
终止数据输入
[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 也接受文件结尾)。
顺便说一句,您通常只需将数据作为参数传递,而不是使用 read/1。如果您以这种方式更改代码,则只需调用 main([3,7,5,2]).
应该向 运行 代码正确写入什么值。我给了任何数量我没有看到任何输出。
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 LARGE\n", I)
;
printf("%w %w\n", [I, Bi])
)
).
您的程序运行良好。也许您忘记使用 fullstop/period?
终止数据输入[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 也接受文件结尾)。
顺便说一句,您通常只需将数据作为参数传递,而不是使用 read/1。如果您以这种方式更改代码,则只需调用 main([3,7,5,2]).