Найти середину 3 числа - PullRequest
       9

Найти середину 3 числа

0 голосов
/ 02 октября 2018

Итак, у меня проблема с поиском среднего числа между 3 числами.Я написал код, но получаю сообщение "Exception: Failure "int_of_string".У вас есть идеи, почему?

 let minimum a b c = min a (min b c)
 let maximum a b c = max a (max b c)
 let middle a b c =if a > (minimum a b c) && a < (maximum a b c) then Printf.printf "The middle is %d" a;
                    if b > (minimum a b c) && b < (maximum a b c) then Printf.printf "The middle is %d" b;
                    if c > (minimum a b c) && c < (maximum a b c) then Printf.printf "The middle is %d" c
let () = print_string "Enter x: "
let x = read_int ()
let () = print_string "Enter y: "
let y = read_int ()
let () = print_string "Enter z: "
let z = read_int ()
let mid = middle x y z;;

Когда я запускаю его, я получаю это:

let minimum a b c = min a (min b c)
let maximum a b c = max a (max b c)
let mediana a b c = if a > (minimum a b c) && a < (maximum a b c) then Printf.printf "The middle is %d" a;
                      if b > (minimum a b c) && b < (maximum a b c) then Printf.printf "The middle is %d" b;
                      if c > (minimum a b c) && c < (maximum a b c) then Printf.printf "The middle is %d" c
  let () = print_string "Enter x: "
  let x = read_int ()
  let () = print_string "Enter y: "
  let y = read_int ()
  let () = print_string "Enter z: "
  let z = read_int ()
  let mid = middle x y z;;
Enter x:
Exception: Failure "int_of_string".
#

1 Ответ

0 голосов
/ 03 октября 2018

Если я запускаю новый интерпретатор из оболочки Linux с помощью команды ocaml или utop, а затем копирую / вставляю в него ваш первый код, у меня нет проблем с вводом числа.

Однако, если в вашем коде как-то есть пустая строка после ;;, то интерпретатор ocaml воспринимает это как ввод для x и действительно прямо жалуется, что эту пустую строку нельзя преобразовать в число, что приводит кк симптомам, которые вы описываете.Поэтому я бы посоветовал вам быть осторожным, чтобы не копировать посторонние символы (особенно символы новой строки) при подаче интерпретатора, или переключаться на utop, который не демонстрирует такое поведение и намного приятнее,с историей команд и автозаполнением среди других приятных вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...