Skip to content
Extraits de code Groupes Projets
Valider d8f46721 rédigé par EdouardParis's avatar EdouardParis
Parcourir les fichiers

add subtract method to degree

parent 18635bc5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -24,8 +24,10 @@ module type Degree =
type degree
val print: degree -> string
val add: degree -> degree -> degree
val subtract: degree -> degree -> degree
val equal: degree -> degree -> bool
val is_bigger: degree -> degree -> bool
val is_null: degree -> bool
end
;;
......@@ -107,18 +109,21 @@ module Polynome (C : Coefficient) (D : Degree) =
|Null -> Null
|NotNull (cp, dp, pp) -> NotNull (C.minus cp, dp, minus pp)
in x add (minus y)
(*fonction privée pour couper un polynome*)
(*fonction privée pour couper un polynome selon un degree*)
(*polynome -> degree -> degree *)
let cut x n =
let rec acc_cut acc p i = match p, i with
|Null, _ -> acc, Null
|_, 0 -> acc, p
|NotNull (cp, dp, pp), j ->
if D.is_null j then acc, p else
if D.is_bigger dp j then
let rec insert cc dd pp = (match pp with
|Null -> NotNull (cc, dd, Null)
|NotNull (ccp, ddp, ppp) ->
NotNull (ccp, ddp, (insert cc dd ppp))
) in
acc_cut (insert cp dp acc) pp (j - 1)
acc_cut (insert cp (D.subtract dp j) acc) pp j
else acc, p
in acc_cut Null x n
(*fonction privée pour connaitre la longeur du polynome *)
let length x =
......
......@@ -7,8 +7,10 @@ module SimpleDegree =
type degree = int
let print d = (string_of_int d)
let add d1 d2 = d1 + d2
let subtract d1 d2 = d1 - d2
let equal d1 d2 = (d1 == d2)
let is_bigger d1 d2 = (d1 > d2)
let is_null d = (d == 0)
end
;;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter