2015-03-28 1 views
1

Я стараюсь, чтобы прочитать строку в качестве строки из консоли (стандартный ввод) в picat и получить свою половину:Как получить int от float в picat?

main => 
    L = read_line(), 
    B = L.length/2, 
    S = L.slice(1,B), 
    println(S). 

разбивает с error(integer_expected(2.0),slice)

когда INT используется вместо B - не аварий. Итак, как превратить B в целое число?

ответ

0

Попробуйте либо использовать функцию integer(..) для преобразования L.length/2 в целое число, либо использовать to_integer() функция .... должна сделать это за вас.

0

Вывод типа играет существенную роль в функциональной оценке. (//2) это арифметический оператор с плавающей запятой, но slice/2 ожидает целое число. Поэтому вместо этого вы должны использовать (///2).

Picat> L=read_line(),println(L.slice(1,L.length//2)). 
123456789 
1234 
L = ['1','2','3','4','5','6','7','8','9'] 
yes 
0

можно использовать встроенную функцию, как floor, round или ceiling из math module (больше функций here). Таким образом, вы можете изменить свой код следующим образом:

main => 
    L = read_line(), 
    B = round(L.length/2), 
    S = L.slice(1,B), 
    println(S). 

 Смежные вопросы

  • Нет связанных вопросов^_^