Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2012, 18:19   #1
MayhemWithMercy
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 23
По умолчанию Задача о Ханойских башнях. Рекурсивное решение. Время выполнения алгоритма (Pascal)

В центре мира в вершинах равностороннего треугольника в землю вбиты три алмазных шпиля. На одном из них надето 64 золотых диска убывающих радиусов (самый большой – нижний). Трудолюбивые буддийские монахи день и ночь переносят диски с одного шпиля на другой. При этом, диски следует переносить по одному и нельзя класть больший диск на меньший. Когда все диски перенесут на другой шпиль, наступит конец света (задачу и рассказ придумал математик Эдуар Люка в 1883 г.).

В общем алгоритм уже реализован, в программе Lazarus, на языке Pascal, вот только нужно сделать несколько тестов, точнее измерить время выполнения алгоритма, в зависимости от количества колец. Вопрос такой, с помощью каких функций или процедур можно это сделать, и какие может быть модули надо подключить и как это сделать...
MayhemWithMercy вне форума Ответить с цитированием
Старый 25.08.2012, 18:32   #2
MayhemWithMercy
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 23
По умолчанию

Вот пробовал как здесь http://programmersforum.ru/showthread.php?t=34353
Но не могу декларировать такую переменную

ticks : LongInt absolute 0:$46c;

Выдает ошибку синтаксиса...
MayhemWithMercy вне форума Ответить с цитированием
Старый 25.08.2012, 18:48   #3
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Если каждую секунду будет перемещаться одно кольцо, то операция будет выполнена за 18 446 744 073 709 551 616 секунд. (2^64).
hon вне форума Ответить с цитированием
Старый 25.08.2012, 18:49   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от MayhemWithMercy Посмотреть сообщение
ticks : LongInt absolute 0:$46c;
Это для ДОС
waleri вне форума Ответить с цитированием
Старый 25.08.2012, 18:59   #5
MayhemWithMercy
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 23
По умолчанию

Ну у меня такая задача, тут уж я ничего не могу поделать, нужно точно знать время выполнения программы, то есть если на 10 кольцах, это неощутимо, то на 64 кольцах, я ждал минут 40, потом мне надоело и я выключил. Вот теперь надо опять включить, только на этот раз замерить.
MayhemWithMercy вне форума Ответить с цитированием
Старый 25.08.2012, 19:15   #6
MayhemWithMercy
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 23
По умолчанию

Вот я в принципе понял как можно замерить время с помощью системных тиков, только не знаю как можно получить доступ к этой ячейке $0000:$046c вот както так она выглядит. Или так $0040:$006C, я точно не знаю...
MayhemWithMercy вне форума Ответить с цитированием
Старый 25.08.2012, 19:26   #7
MayhemWithMercy
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от hon Посмотреть сообщение
Если каждую секунду будет перемещаться одно кольцо, то операция будет выполнена за 18 446 744 073 709 551 616 секунд. (2^64).
Если так то на 1 секунду меньше. 2^N-1
MayhemWithMercy вне форума Ответить с цитированием
Старый 25.08.2012, 20:01   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от MayhemWithMercy Посмотреть сообщение
Вот я в принципе понял как можно замерить время с помощью системных тиков, только не знаю как можно получить доступ к этой ячейке $0000:$046c вот както так она выглядит. Или так $0040:$006C, я точно не знаю...
Эти адреса для ДОС. Вы для какой операционки пишете?
waleri вне форума Ответить с цитированием
Старый 25.08.2012, 20:07   #9
MayhemWithMercy
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Эти адреса для ДОС. Вы для какой операционки пишете?
Ну, я не сильно еще разбираюсь, но скажу так, у меня стоит Windows XP, пишу в программе Lazarus, вот мне надо замерить там пару вариантов и просто потом я в таблице это выведу в отчете. То есть надо чтобы этот exe-шник на XP работал, надеюсь я правильно вас понял.
MayhemWithMercy вне форума Ответить с цитированием
Старый 25.08.2012, 20:13   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

http://forum.lazarus.freepascal.org/...p?topic=6099.0
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal задача.нужно решение Avelhar Помощь студентам 7 21.05.2012 12:25
Время выполнения n00n Общие вопросы C/C++ 7 10.06.2010 15:05
Время выполнения Goodwin98 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 21.06.2009 08:41
необходимо засечь время выполнения части алгоритма Lord Lex Win Api 12 03.03.2009 21:36
Рекурсивное решение задачи о Ханойских Башнях bullvinkle Помощь студентам 2 01.04.2008 13:09