home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l210 / 1.ddi / ANSWERS.ARC / ANS_203B.PRO < prev    next >
Encoding:
Prolog Source  |  1988-06-21  |  1.2 KB  |  47 lines

  1. /*
  2.    Turbo Prolog 2.0, Answer to second Exercise on page 203.
  3.    
  4.    Copyright (c) 1986, 88 by Borland International, Inc
  5. */
  6.  
  7. Domains
  8.   reallist = real*
  9.   
  10. Predicates
  11.   real_average ( reallist, real )
  12.   list_length ( reallist, real, real )
  13.   list_sum (reallist, real, real )
  14.   get_list ( reallist ) 
  15.   
  16. Clauses
  17.   real_average(List, Average) :-
  18.       list_length(List, 0, Length) ,
  19.       list_sum(List, 0, Sum) ,
  20.       Average = Sum / Length.
  21.       
  22.   list_length([], L, L) :- !.
  23.   list_length([_|T], Temp_length, Length) :-
  24.       New_temp = Temp_length + 1 ,
  25.       list_length(T, New_temp, Length).
  26.       
  27.   list_sum([], S, S) :- !.
  28.   list_sum([Num|T], Temp_sum, Sum) :-
  29.         New_temp = Num + Temp_sum ,
  30.         list_sum(T, New_temp, Sum).
  31.         
  32.   get_list([H|T]) :-
  33.         write("Enter a real number: ") ,
  34.         readreal(H) ,
  35.         !, get_list(T).
  36.   get_list([]).        
  37.   
  38. Goal
  39.   makewindow(1,2,3," Real List Sum ",0,0,25,80) ,
  40.   write("Please enter a list of real numbers" ,
  41.         " (enter a non-integer to stop):\n\n") ,
  42.   get_list(List), nl, nl ,  
  43.   real_average(List, Average) ,
  44.   write("The list is:\n", List) ,
  45.   writef("\n\nThe average is: %.\n", Average).
  46.   
  47.