Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* Tools *)
- let rec print_list = function
- | [] -> ()
- | (e, f)::l ->
- print_string "(";
- print_int e;
- print_string ", ";
- print_int f;
- print_string(") ");
- print_list l
- ;;
- (* EXERCICE 1 *****************************************************************)
- type gdnb = {
- signe : bool;
- abs : (int*int) list
- };;
- (* QUESTION 1 *****************************************************************)
- let getSigne str =
- match str with
- | x when (String.get str 0) == '-' -> false
- | _ -> true
- ;;
- let extractSigne str =
- match str with
- | x when (String.get str 0) == '-' -> String.sub str 1 (String.length str - 1)
- | x when (String.get str 0) == '+' -> String.sub str 1 (String.length str - 1)
- | _ -> str
- ;;
- let strToGdnb str =
- let rec aux sub offset length power res =
- match length with
- | 0 ->
- {
- signe = res.signe;
- abs = (power, (int_of_string sub))::res.abs
- }
- | x when length < 4 ->
- aux
- (String.sub str offset length)
- (offset + length)
- (0)
- (power + 1)
- {
- signe = res.signe;
- abs = (power, (int_of_string sub))::res.abs
- }
- | _ ->
- aux
- (String.sub str offset 4)
- (offset + 4)
- (length - 4)
- (power + 1)
- {
- signe = res.signe;
- abs = (power, (int_of_string sub))::res.abs
- }
- in aux
- (String.sub (extractSigne str) 0 4)
- 4
- (String.length str - 4)
- 0
- { signe = (getSigne str); abs = [] }
- ;;
- (* Test *)
- print_endline(" ");;
- let str = "123456789";;
- let res = strToGdnb str;;
- print_string (string_of_bool res.signe);;
- print_string (" ");;
- print_list res.abs;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement