2017-03-27 11 views
1
menu:- write('how much data to input : '),read(N1), 
    N2 is 0,loop(N2,N1). 


loop(N2,N1):-N1>0, N3 is N2+1, 
     write('Input data '),write(N3),write(' : '),read(M1), 
     N is N2+1, X is N1-1, loop(N,X). 

,大家好我新的序言中有我有迴路輸入,如何從迴路輸入添加(M1)列出,然後找到最大和最小的清單?我的數據是整數。添加輸入名單,然後求和,找到最大和最小的名單上

+0

爲什麼你這樣做? Prolog有交互式解釋器,它被稱爲「頂層」,如果你有C,也許你需要自己做解釋器,但是在Prolog中,解釋器可以爲你做閱讀。 –

回答

1

如果你只是從從命令行啓動的Prolog你得到這樣的:

?- 

然後光標正在等待你輸入的東西。然後,你可以寫括號之間的整數的列表,並把它放在一個變量,它看起來是這樣的:如果你想看看是否所有元素都是整數,你可以寫

?- [1,2,3] = X. 

現在:

?- [1,2,3] = X, 
    maplist(integer, X). 
現在

,如果你想找到的最小值和最大值,您可以使用庫謂詞是這樣的:

?- [1,2,3] = X, 
    maplist(integer, X), 
    min_list(X, Min), 
    max_list(X, Max), 
    sum_list(X, Sum). 

如果你真的想要做一次全部,你可以做這樣的可能:

integers_min_max_sum([I|Is], Min, Max, Sum) :- 
    integers_min_max_sum_1(Is, I, I, I, Min, Max, Sum). 

integers_min_max_1([], Min, Max, Sum, Min, Max, Sum). 
integers_min_max_1([I|Is], Min0, Max0, Sum0, Min, Max, Sum) :- 
    integer(I), 
    Min1 is min(Min0, I), 
    Max1 is max(Max0, I), 
    Sum1 is Sum0 + I, 
    integers_min_max_1(Is, Min1, Max1, Sum1, Min, Max, Sum). 

?- integers_min_max_sum([1,2,3, ...], Min, Max, Sum). 

但是這真的比使用庫謂詞更好嗎?也許,或者不是。

+0

好吧,我知道,我只是做實驗讓prolog存儲來自用戶的輸入,然後使用列表找到最大值和最小值,thx幫助我學習序言。 –