diff --git a/medium_project/src/MSgfile.ml b/medium_project/src/MSgfile.ml index 8d6de19..751f4dc 100644 --- a/medium_project/src/MSgfile.ml +++ b/medium_project/src/MSgfile.ml @@ -49,11 +49,7 @@ let read_comment graph line l_id= (* Reads a line with a user. *) let read_user id graph l_id line = -<<<<<<< HEAD - try Scanf.sscanf line "u %s" (fun user-> (init_node graph user id l_id ) -======= try Scanf.sscanf line "u %s" (fun user -> init_node graph user id l_id ) ->>>>>>> 097a500b7df1b0d2233a4edb99973bee942814f9 with e -> Printf.printf "Cannot read node in line - %s:\n%s\n%!" (Printexc.to_string e) line ; failwith "from_file" @@ -61,11 +57,7 @@ let read_user id graph l_id line = (* Reads a line with a payement. *) let read_payement graph l_id line = try Scanf.sscanf line "p %s %s %f" -<<<<<<< HEAD - (fun user l_user label -> ((paiement graph user (String.split_on_char ',' l_user) label, l_id) -======= (fun user l_user label -> paiement graph user (String.split_on_char ',' l_user) label l_id) ->>>>>>> 097a500b7df1b0d2233a4edb99973bee942814f9 with e -> Printf.printf "Cannot read arc in line - %s:\n%s\n%!" (Printexc.to_string e) line ; failwith "from_file" @@ -90,11 +82,7 @@ let from_file path = (* The first character of a line determines its content : u or p. *) else match line.[0] with | 'u' -> (n+1, read_user n graph l_id line) -<<<<<<< HEAD - | 'p' -> (n, read_payement graph line l_id) -======= | 'p' -> (n, read_payement graph l_id line) ->>>>>>> 097a500b7df1b0d2233a4edb99973bee942814f9 (* It should be a comment, otherwise we complain. *) | _ -> (n, read_comment graph line l_id) diff --git a/medium_project/src/MSgfile.mli b/medium_project/src/MSgfile.mli index b69b937..4d7f9df 100644 --- a/medium_project/src/MSgfile.mli +++ b/medium_project/src/MSgfile.mli @@ -2,9 +2,9 @@ open Graph type path = string -val from_file: path -> (float graph * (string * id) list) +val from_file: path -> (float graph * (string * id * float) list) -val write_file: path -> string graph -> (string * id) list -> unit +val write_file: path -> string graph -> (string * id * float) list -> unit val export: path -> string graph -> unit diff --git a/medium_project/src/moneySharing.ml b/medium_project/src/moneySharing.ml index 6537b9e..2714b21 100644 --- a/medium_project/src/moneySharing.ml +++ b/medium_project/src/moneySharing.ml @@ -4,37 +4,38 @@ open Tool (*fonction qui créé le noeud associé à un utilisateur et rentre la correspondance dans la table des id*) let init_node g user id l_id= - ((new_node g id), ((user,id,0)::l_id)) + ( (new_node g id), ((user,id,0.0)::l_id) ) (*fonction qui renvoie l'id d'un utilisateur*) let rec get_id utilisateur l_id= match l_id with |[]-> raise Not_found - |(a,id1,val)::b-> if a=utilisateur then id1 else get_id utilisateur b + |(a,id1,value)::b-> if a=utilisateur then id1 else get_id utilisateur b (*fonction qui renvoie le nom correspondant à un id*) let rec get_user id1 l_id= match l_id with |[]-> raise Not_found - |(nom,a,val)::b-> if a=id1 then nom else get_user id1 b + |(nom,a,value)::b-> if a=id1 then nom else get_user id1 b let set_val_du a l_id montant l_utilisateurs= - List.map (fun (nom,id,val)-> if nom=a - then (nom,id,(Float.sub val (Float.div montant (Float.of_int(List.length l_utilisateurs))))) - else (nom,id,val) - ) l_id + List.map (fun (nom,id,value)-> if nom=a + then (nom,id,(Float.sub value (Float.div montant (Float.of_int(List.length l_utilisateurs))))) + else (nom,id,value) + ) l_id let set_val_pret utilisateur montant l_id= - List.map (fun (nom,id,val)-> if nom=utilisateur - then (nom,id,(Float.add val montant)) - else (nom,id,val) - ) l_id + List.map (fun (nom,id,value)-> if nom=utilisateur + then (nom,id,(Float.add value montant)) + else (nom,id,value) + ) l_id (*fonction qui rentre les paiements réalisés*) -let rec paiement g utilisateur l_utilisateurs montant l_id= - set_val_pret utilisateur montant l_id - match l_utilisateurs with - |[]-> (g, l_id) - |a::b-> paiement g utilisateur b montant (set_val_du a l_id montant l_utilisateurs) +let paiement g utilisateur l_utilisateurs montant l_id= + let rec paye g utilisateur l_utilisateurs montant l_id=match l_utilisateurs with + |[]-> (g, l_id) + |a::b-> paye g utilisateur b montant (set_val_du a l_id montant l_utilisateurs) in + let l_id= set_val_pret utilisateur montant l_id in + paye g utilisateur l_utilisateurs montant l_id diff --git a/medium_project/src/moneySharing.mli b/medium_project/src/moneySharing.mli index d7a5f8b..012addc 100644 --- a/medium_project/src/moneySharing.mli +++ b/medium_project/src/moneySharing.mli @@ -1,13 +1,13 @@ open Graph -val paiement: float graph -> string -> string list -> float -> (string * id) list -> (float graph * (string * id) list) +val paiement: float graph -> string -> string list -> float -> (string * id * float) list -> (float graph * (string * id * float) list) -val init_node: float graph -> string -> id -> (string * id) list-> (float graph * (string * id) list) +val init_node: float graph -> string -> id -> (string * id * float) list-> (float graph * (string * id * float) list) -val get_id: string -> (string * id) list -> id +val get_id: string -> (string * id * float) list -> id -val get_user: id -> (string * id) list -> string +val get_user: id -> (string * id * float) list -> string -val set_val_du: +val set_val_du: string -> (string * id * float) list -> float -> string list -> (string * id * float) list -val set_val_pret: \ No newline at end of file +val set_val_pret: string -> float -> (string * id * float) list -> (string * id * float) list \ No newline at end of file