(****************) (* Question 1.1 *) (****************) type monome = {coeff: int; degre: int} ;; type polynome = monome list ;; let zero = [] and x = [{coeff=1 ; degre=1}] and p = [{coeff=1;degre=5}; {coeff=(-2);degre=4}; {coeff=1;degre=0}] ;; let afficher p = () (* CODE A ECRIRE *) ;; (* Afficher avec retour à la ligne *) let afficher_bis p = afficher p ; print_newline () let test1 () = Printf.printf "** Impression **\n" ; Printf.printf "Polynôme nul: " ; afficher_bis zero ; Printf.printf "Polynôme X: " ; afficher_bis x ; Printf.printf "Polynôme lambda: " ; afficher_bis p ;; test1 () ;; (****************) (* Question 1.2 *) (****************) let somme p1 p2 = p1 (* TRÈs FAUX *) ;; let t_somme p1 p2 = Printf.printf "<" ; afficher p1 ; Printf.printf "> + <" ; afficher p2 ; Printf.printf "> --> <" ; afficher (somme p1 p2) ; Printf.printf ">\n" ;; let test2 () = Printf.printf "** Somme **\n" ; t_somme [] [] ; t_somme p [] ; t_somme [] p ; t_somme x x ; t_somme [{coeff=2 ; degre=4}] p ;; test2 () ;; (****************) (* Question 1.3 *) (****************) let deriver p = [] (* À CHANGER *) ;; let t_deriv p = Printf.printf "<" ; afficher p ; Printf.printf ">' --> <" ; afficher (deriver p) ; Printf.printf ">\n" ;; let test3 () = Printf.printf "** Dérivation **\n" ; t_deriv [] ; t_deriv x ; t_deriv p ; let p = deriver p in t_deriv p ; let p = deriver p in t_deriv p ; let p = deriver p in t_deriv p ; let p = deriver p in t_deriv p ; let p = deriver p in t_deriv p ;; test3 () ;; (****************) (* Question 1.4 *) (****************) let produit p1 p2 = [] (* TRÈS FAUX *) ;; let t_prod p1 p2 = Printf.printf "<" ; afficher p1 ; Printf.printf "> * <" ; afficher p2 ; Printf.printf "> --> <" ; afficher (produit p1 p2) ; Printf.printf ">\n" ;; let test4 () = Printf.printf "** Produit **\n" ; t_prod p [] ; t_prod [] p ; t_prod x x ; t_prod [{coeff=2 ; degre=4}] p ; t_prod p p ;; test4 () ;; (****************) (* Question 1.5 *) (****************) let evaluer p x = 0 (* TRÈS INSUFFISANT *) ;; let t_eval p x v = let y = evaluer p x in Printf.printf "%d=%d\n" y v ;; let test5 () = Printf.printf "** Évaluer **\n" ; t_eval [] 0 0 ; t_eval [] 1 0 ; t_eval x 2 2 ; let c = produit x x in t_eval c 2 4 ; let q = produit c c in t_eval q 2 16 ; t_eval (somme q c) 2 20 ; t_eval p 1 0 ; t_eval p (-1) (-2) ;; test5 () ;; exit 0 ;;