Advertisement
LC117

Untitled

Nov 22nd, 2018
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.11 KB | None | 0 0
  1. type student = {
  2.   first_name : string;
  3.   last_name : string;
  4.   id : int;
  5.   semester : int;
  6.   grades : (int * float) list;
  7. }
  8.  
  9. let students = [
  10.   { first_name = "Anton"; last_name = "Maier"; id=173; semester=3; grades=[1, 1.7; 4, 2.3; 18, 3.0] };
  11.   { first_name = "Betty"; last_name = "Schmidt"; id=418; semester=1; grades=[] };
  12.   { first_name = "Carla"; last_name = "Kurz"; id=223; semester=2; grades=[1, 4.0; 3, 1.0; 7, 1.3; 12, 1.0] };
  13.   { first_name = "Denis"; last_name = "Uler"; id=19; semester=3; grades=[1, 2.2; 7, 1.0; 8, 5.0] }
  14. ]
  15.  
  16. let rec find_by_id id db = match db with [] -> []
  17.   | x::xs -> if x.id = id then [x] else find_by_id id xs
  18.  
  19.  
  20. let print x = print_string"x:";print_float x;print_string"\n"
  21.  
  22. (* help_funtions for student_avg_grade *)
  23.  
  24. let rec add_up_grades grade_list = match grade_list with
  25.   | [] -> 0.0
  26.   | (a,b)::xs -> b +. add_up_grades xs
  27.  
  28. (* end of help_function for students_avg_grade*)
  29.  
  30. let student_avg_grade id db = match (find_by_id id db) with
  31.   | [] -> 0.0
  32.   | x::xs -> add_up_grades x.grades /. float_of_int(List.length x.grades)
  33.  
  34.  
  35. print (student_avg_grade 173 students)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement