Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Двоичная система -> десятичная система
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
sanya84 sanya84 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.01.2009
По умолчанию 12.01.2009, 08:29

1) Напишите рекурсивный предикат для осуществления перевода из двоичной системы счисления в десятичную

Не знаю даже, с чего начать

2) Напишите рекурсивный предикат для вычисления числа сочетаний из n элементов по m

Помогите кто чем.

СПасибо!
Ответить с цитированием
  (#2 (permalink)) Старый
sanya84 sanya84 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.01.2009
По умолчанию 12.01.2009, 08:35

для второй задачи вроде что то типа этого? :

Код:
predicates

sochetanie(integer,integer,real)

goal

write("Chislo sochetaniy iz n elementov po m"), 
write("Vvedite n="),readint(Nn),
write("Vvedite m="),readint(Mm),
sochetanie(Nn,Mm,R),
write("Rezultat=",R).

clauses

sochetanie(1,1,1).
sochetanie(N,M,Rez):-N>0,M>0,N1=N-1,M1=M-1,
sochetanie(N1,M1,Rez1),
Rez=N/M*Rez1.
Что то не очень только пашет


Искал по всему форуму про переводы чисел, но для себя похожего не нашёл (( А если что то и было похожее, то явно не для ТУрбо пролога 2.0...
Ответить с цитированием
  (#3 (permalink)) Старый
aag aag вне форума
А.А.Г.
 
Аватар для aag
 
Сообщений: 3,380
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
Адрес: Адмиралтейская)))
По умолчанию 12.01.2009, 10:49

Цитата:
1) Напишите рекурсивный предикат для осуществления перевода из двоичной системы счисления в десятичную
Код:
predicates     

dec(string,integer,integer)

clauses        

dec("",M,0):- !, M>1.
dec(Str,M,Out):- frontchar(Str,Char,Rest), char_int(Char,Int),
     Int<=49,Int>=48, Mn=M*2, dec(Rest,Mn,O), Out=O+M*(Int-48).
и диалог
Цитата:
Goal: dec("1101",1,Out)
Out=11
1 Solution
Goal: dec("1111",1,Out)
Out=15
1 Solution
Goal: dec("",1,Out)
No Solution
Goal: dec("asd",1,Out)
No Solution
Goal: dec("1113",1,Out)
No Solution
Goal: dec("000001",1,Out)
Out=32
1 Solution
только integer -- на большой цифири глючит и дробную часть "забыли"
Ответить с цитированием
  (#4 (permalink)) Старый
sanya84 sanya84 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.01.2009
По умолчанию 12.01.2009, 10:54

Спасибо громадное! Выручили до нельзя!
Ответить с цитированием
  (#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.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Система Huller Любые вопросы от новичков 5 15.12.2011 19:18
система Х32 или Х64 Финтиклюшкин Windows 7 11 12.10.2011 13:32
Экспертная система! sakh Prolog 0 28.01.2009 14:45
Файловая система Fargus Разное 0 09.12.2008 18:51
Экспертная система на 7.1 mail-aleks Prolog 1 22.09.2008 11:43
Система за 500-600 у.е Артём Подбор комплектующих 6 25.05.2008 15:37
Система за 500-600 у.е Артём Моддинг 0 24.05.2008 15:10
Экспертная система leonora Prolog 11 19.12.2007 19:48
Экспертная система на Vip 6.3 leonora Prolog 3 16.12.2007 18:18
Система распознавания лиц geMnLaJdii Delphi 1 21.10.2007 22:43
Система распознавания лиц Azamat Информационные технологии 1 06.12.2006 12:52
Строка двоичная система счисления mmmaxxx Delphi 22 23.08.2006 14:19



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов