Advertisement
Guest User

SarahLaMeufDUlysse

a guest
Feb 18th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. (* Tools *)
  2. let rec print_list = function
  3. | [] -> ()
  4. | (e, f)::l ->
  5. print_string "(";
  6. print_int e;
  7. print_string ", ";
  8. print_int f;
  9. print_string(") ");
  10. print_list l
  11. ;;
  12.  
  13.  
  14. (* EXERCICE 1 *****************************************************************)
  15. type gdnb = {
  16. signe : bool;
  17. abs : (int*int) list
  18. };;
  19.  
  20.  
  21. (* QUESTION 1 *****************************************************************)
  22. let getSigne str =
  23. match str with
  24. | x when (String.get str 0) == '-' -> false
  25. | _ -> true
  26. ;;
  27.  
  28. let extractSigne str =
  29. match str with
  30. | x when (String.get str 0) == '-' -> String.sub str 1 (String.length str - 1)
  31. | x when (String.get str 0) == '+' -> String.sub str 1 (String.length str - 1)
  32. | _ -> str
  33. ;;
  34.  
  35. let strToGdnb str =
  36. let rec aux sub offset length power res =
  37. match length with
  38. | 0 ->
  39. {
  40. signe = res.signe;
  41. abs = (power, (int_of_string sub))::res.abs
  42. }
  43. | x when length < 4 ->
  44. aux
  45. (String.sub str offset length)
  46. (offset + length)
  47. (0)
  48. (power + 1)
  49. {
  50. signe = res.signe;
  51. abs = (power, (int_of_string sub))::res.abs
  52. }
  53.  
  54. | _ ->
  55. aux
  56. (String.sub str offset 4)
  57. (offset + 4)
  58. (length - 4)
  59. (power + 1)
  60. {
  61. signe = res.signe;
  62. abs = (power, (int_of_string sub))::res.abs
  63. }
  64.  
  65. in aux
  66. (String.sub (extractSigne str) 0 4)
  67. 4
  68. (String.length str - 4)
  69. 0
  70. { signe = (getSigne str); abs = [] }
  71. ;;
  72.  
  73. (* Test *)
  74. print_endline(" ");;
  75. let str = "123456789";;
  76. let res = strToGdnb str;;
  77. print_string (string_of_bool res.signe);;
  78. print_string (" ");;
  79. print_list res.abs;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement