Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type student = {
- first_name : string;
- last_name : string;
- id : int;
- semester : int;
- grades : (int * float) list;
- }
- let students = [
- { first_name = "Anton"; last_name = "Maier"; id=173; semester=3; grades=[1, 1.7; 4, 2.3; 18, 3.0] };
- { first_name = "Betty"; last_name = "Schmidt"; id=418; semester=1; grades=[] };
- { first_name = "Carla"; last_name = "Kurz"; id=223; semester=2; grades=[1, 4.0; 3, 1.0; 7, 1.3; 12, 1.0] };
- { first_name = "Denis"; last_name = "Uler"; id=19; semester=3; grades=[1, 2.2; 7, 1.0; 8, 5.0] }
- ]
- let rec find_by_id id db = match db with [] -> []
- | x::xs -> if x.id = id then [x] else find_by_id id xs
- let print x = print_string"x:";print_float x;print_string"\n"
- (* help_funtions for student_avg_grade *)
- let rec add_up_grades grade_list = match grade_list with
- | [] -> 0.0
- | (a,b)::xs -> b +. add_up_grades xs
- (* end of help_function for students_avg_grade*)
- let student_avg_grade id db = match (find_by_id id db) with
- | [] -> 0.0
- | x::xs -> add_up_grades x.grades /. float_of_int(List.length x.grades)
- print (student_avg_grade 173 students)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement