![]() |
|
![]() ![]() ![]() |
|
Tomsk11 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.4.2011 Репутация: нет Всего: нет |
Привет всем!
пишу программу на Visual Prolog. Тема -списки. буду благодарен за советы. Условие: Напишите предикат (?M,?N, ?L), истинный тогда и только тогда , когда L- список чисел, расположенных между M и N включительно (предикат должен допускать различное использование, когда не менее двух из трех аргументов конкретизированы). Указание: используйте предикаты var(+X) и nonvar(+X). Мой алгоритм: 1. Пользователь вводит числа M, N и некий список L; 2. если список L - нулевой, то тогда выход из программы. range(M,N,[]). 3. если список ненулевой, продолжаем.... 4. сравниваем первый элемент (голову-H) списка L с числом M, если H=>M, тогда истина. 5. сраниваем последний элемент (для этого нужно, как я понял, пройти рекурсивно весь список и найти последний элемент) с числом N, если G<=N, тогда истина. (G-последний элемент списка L) как рекурсивно пройти весь список L и найти последний элемент? |
|||
|
||||
Tomsk11 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.4.2011 Репутация: нет Всего: нет |
получается, что предикат range(M,N,L) будет истинен при условии истинности пунктов 4 и 5
range (M,N,L):-isMember(M,L), itMember(N,L). isMember(M,L)- предикат, который проверяет пункт 4, то есть выполнено ли условие H=>M inMember(N,L)- предикат, который проверяет пункт 5, то есть выполнено ли условие G<=N |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
||||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
||||
|
||||
![]() ![]() ![]() |
Правила форума Prolog | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Prolog | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |