Показать сообщение отдельно
  (#5 (permalink)) Старый
ТэН ТэН вне форума
Новичок
 
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.01.2009
Post 22.01.2009, 22:48

Мне тоже надо было такую задачу решить, но без всяких строк. Вот так я это сделал:


Код:
predicates
nondeterm to10(integer,integer,integer)
nondeterm print
clauses
to10(C,N,Num):-C=0,write(Num),!;%условие выхода из рекурсии
               M=C mod 10,%отделяем последнюю цифру
               C1=C div 10,%выбрасываем последнюю цифру
               Num1=Num+M*N,      %переводим двоичную цифру в 10
               N1=N*2,            %умножаем коэффициент на 2, для перевода следующей цифры
               to10(C1,N1,Num1).  %выполняем вышеописанный процесс со всеми цифрами чисила
to10(0,Num,Num):-write(Num).      %нуль равен нулю в любой системе исчисления. :)
print:-write("Введите двоичное число: "),readint(X),nl,write("Двоичное число ",X," в десятичной равно "),to10(X,1,0). % тут, я думаю, все понятно. :)
goal
print,nl,readln(_).
Ответить с цитированием
Ads