Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
1

Обработка списков

08.11.2013, 18:26. Просмотров 817. Ответов 6
Метки нет (Все метки)

В коде, в строке head_list(list). появилась ошибка No clauses for this predicate. Но head_list(list). используется! Что я неправильно написал?

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
domains
list = integer*
predicates 
run
rdlist(list) .
tail_list(list).
head_list(list).
goal
run.
clauses
run :-  write("write lists: "),nl, 
rdlist(L),
G=L,
write("<<: "),nl,
tail_list(L),nl, 
write(">>:  "),nl, 
head_list(G).
rdlist([S|L]) :- readint(S), 
  rdlist(L). 
rdlist([]).
tail_list([S|T]) :-  tail_list(T), 
 write(S,", "). 
tail_list([]).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2013, 18:26
Ответы с готовыми решениями:

Обработка списков
Помогите, пожалуйста, с задачей. Необходимо определить новые предикаты, которые работают со...

Обработка списков
Помогите пожайлуста!!! Задание: 1. Создать список, состоящий из значений первых аргументов...

Обработка списков
Даны два непустых списка целых чисел L1 и L2. Создать программу, которая строит список L3,...

Обработка списков
Список состоит из букв и цифр, буквы оставить без изменения, а цифры умножить на 2.

6
99 / 99 / 14
Регистрация: 07.02.2013
Сообщений: 128
08.11.2013, 18:46 2
Цитата Сообщение от SAZl Посмотреть сообщение
ошибка No clauses for this predicate
- это значит, что у Вас в разделе clauses нет набора правил для этого предиката. Т.е. head_list(list) Вы то используете, а его "функционал" не определен.
Prolog
1
head_list([H|T]):-...
0
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
08.11.2013, 18:56  [ТС] 3
Это мне вместо 17-й строки написать?
0
99 / 99 / 14
Регистрация: 07.02.2013
Сообщений: 128
08.11.2013, 19:13 4
Нет, вызов предиката вы оставляете. Суть программы заключается в том, чтобы задать список с клавиатуры, а потом вывести его голову и хвост?
1
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
08.11.2013, 19:29  [ТС] 5
Да, она должна получить список написанный с клавиатуры, а потом вывести на экран в обычном и обратном ввиде.
0
99 / 99 / 14
Регистрация: 07.02.2013
Сообщений: 128
08.11.2013, 20:03 6
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
domains
ilist=integer*
predicates
nondeterm reverse(ilist,ilist,ilist)
nondeterm rdlist(integer,ilist)
nondeterm run
clauses
rdlist(0,[]):-!.
rdlist(N,[X|T]):-N1=N-1,write("Введите X="),readint(X),rdlist(N1,T).
 
reverse([], L, L).
reverse([X|L1], L2, ResultNew):-reverse(L1, [X|L2],ResultNew).
 
run:-write("Введите число элементов списка N="),readint(N),
    rdlist(N,L),write("Прямой порядок=>",L),nl,
    reverse(L,[],Out),write("Обратный=>",Out),nl.
goal
run.
1
2 / 9 / 0
Регистрация: 12.10.2011
Сообщений: 173
08.11.2013, 20:25  [ТС] 7
Все разобрался, оказывается только числа можно вводить, если ввел символ, то выкидывает

Добавлено через 11 минут
Все разобрался. Не обратил внимание на ilist=integer* Благодарю.

Тема закрыта.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2013, 20:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Рекурсивная обработка списков
Напишите предикат, находящий минимальный и максимальный элементы списка.

Обработка соответствующих элементов двух списков и формирование третьего
Даны два списка одинаковой длины. Получить третий список, каждый элемент равен 1, если элементы...

Обработка списков: вводы, разность, получение длины и сортировка [Arity]
помогите с прогой на Arity prolog?! организовать ввод и формирование двух символьных списков.Найти...

Определить, какой из списков меньше (как по значениям элементов, так и по длинам подсписков и самих списков)
Даны списки списков чисел l1 и l2. Определить, какой из списков меньше (как по значениям...

Сумма двух списков списков в Prolog
Есть условие задачи: Построение списка, являющегося поэлементной суммой двух числовых списков...

Обработка списков
1. Используя только CAR и CDR вытащить 'aaa' и следующего списка: (((( ddd (aaa)) eee) nnn) kkk) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.