27 lines
754 B
Prolog
27 lines
754 B
Prolog
:- use_module(library(dcg/basics)).
|
|
:- use_module(library(dcg/high_order)).
|
|
|
|
main :-
|
|
% ask for 11 numbers to be read into a sequence S
|
|
format("Enter 11 numbers for evaluation~n", []),
|
|
length(S, 11),
|
|
phrase_from_stream((sequence(integer, "\n", S), remainder(_)), user_input),
|
|
|
|
% reverse sequence S
|
|
reverse(S, ReversedS),
|
|
|
|
% for each item in sequence S
|
|
foreach((
|
|
member(Item, ReversedS),
|
|
% result := call a function to do an operation
|
|
Result is sqrt(abs(Item)) + 5 * Item ^ 3
|
|
),
|
|
% if result overflows
|
|
( Result > 400
|
|
% alert user
|
|
-> format("~d: OVERFLOW~n", [Item])
|
|
% else print result
|
|
; format("~d: ~f~n", [Item, Result])
|
|
)
|
|
).
|