@@ -73,6 +73,34 @@ fun list_distinct_students (prof, C(c), E(e)) =
73
73
74
74
fun count_distinct_students (prof, C(c), E(e)) = length(list_distinct_students (prof, C(c), E(e))) ;
75
75
76
+ (* Q5*)
77
+ (* remove course and enrollment by course id*)
78
+ fun delete_course_enroll (course_id, C(c), E(e)) =
79
+ let fun delete_course (course_id, C([]), C(c_list)) = C(c_list)
80
+ | delete_course (course_id, C(h::t), C(c_list)) =
81
+ if (course_id = #1 h) then delete_course (course_id, C(t), C(c_list))
82
+ else delete_course (course_id, C(t), C(c_list@[h]));
83
+ fun delete_enroll (course_id, E([]) , E(e_list)) = E(e_list)
84
+ | delete_enroll (course_id , E(h::t), E(e_list)) =
85
+ let fun student_drop (course_id, [], fin_courses) = fin_courses
86
+ | student_drop (course_id, h::t, fin_courses) =
87
+ if (h = course_id) then student_drop (course_id , t, fin_courses)
88
+ else student_drop (course_id , t, fin_courses@[h]);
89
+ val std = (# 1 h , student_drop (course_id, #2 h, []))
90
+ in
91
+
92
+ delete_enroll (course_id, E(t), E(e_list@[std])) end ;
93
+ in
94
+
95
+ (delete_course(course_id,C(c),C([])) , delete_enroll(course_id,E(e),E([])))
96
+
97
+ end ;
98
+
99
+
100
+
101
+
102
+
103
+
76
104
print(" ....(Q1)...." );
77
105
insert_course ([], C [(" comp10" , " p01" )]);
78
106
insert_course ([(" comp12" , " p02" )], C []);
@@ -100,4 +128,13 @@ count_distinct_students ("p01", C [("comp10", "p01")], E [(1701,
100
128
[" comp10" ]), (1702 , [" comp13" ])]);
101
129
count_distinct_students (" p01" , C [(" comp10" , " p01" ), (" comp12" ,
102
130
" p02" ), (" comp13" , " p01" )], E [(1701 , [" comp10" , " comp11" ]), (1702 ,
103
- [" comp13" ])]);
131
+ [" comp13" ])]);
132
+
133
+ print(" ....(Q5)...." );
134
+ delete_course_enroll (" comp10" , C [], E[]);
135
+ delete_course_enroll (" comp10" , C [(" comp10" , " p01" )], E []);
136
+ delete_course_enroll (" comp10" , C [(" comp10" , " p01" )], E [(1701 ,
137
+ [" comp10" ])]);
138
+ delete_course_enroll (" comp10" , C [(" comp10" , " p01" ), (" comp12" ,
139
+ " p02" )], E [(1701 , [" comp10" , " comp11" ]), (1702 , [" comp13" , " comp10" ]),
140
+ (1703 , [])]);
0 commit comments