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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2011, 23:35   #1
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию Второй по величине элемент в массиве.Prologue.

Доброго времени суток. Возник вопрос по prologue. Как при помощи пролога определить с помощью функции второй максимальный элемент в массиве.
Массивов я как понимаю в прологе нет там в основном списки. Вот так что я сделал для списков.Но вот есть ли там функции в прологе этого я так и не нашёл.

Написал обычный предикатный код для нахождения одного максимума.Как второй найти не знаю и как это в функцию вогнать.

Код:
domains 
list = integer*
element=integer
predicates

readlist(integer,list)
max_(integer,integer,list,element)

clauses
readlist(0,[]).
readlist(N,[X|L]):-
N>0,
write("Введите следующее число"),
readint(X),
M=N-1,
readlist(M,L).

 max_(I,I,[H|[]],H):-!.
   max_(F,II,[H|T],Z):-
        N=F+1,
        max_(N,II,T,Z),
        Z>H.
    max_(F,F,[H|_],H).
 

goal

write("Введите длину списка"),
readint(N),nl,
readlist(N,L),

write("Список"),
write(L),nl,

max_(0,I,L,M),
write("L["),write(I),write("]: "),write(M),nl.

Вопрос вообще то не типичный для раздела.Но может быть кто то разбрается в прологе.Лично я его изучать начал недавно и привыкнуть к нему после паскаля и c++ сложновато.
Заранее благодарен.

Последний раз редактировалось Nicko_mt; 07.10.2011 в 23:47.
Nicko_mt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти второй по величине элемент массива (за два прохода; за один проход) (на Паскале) Мaрина Помощь студентам 2 26.09.2011 13:49
Найти второй по величине элемент (assembler) Rom@shka Помощь студентам 3 22.06.2009 20:07
[C++] Поменять местами наименьший и второй по величине элементы StudeHt Помощь студентам 2 10.06.2009 23:33
Динамика. Поменять местами наименьший и второй по величине элементы StudeHt Паскаль, Turbo Pascal, PascalABC.NET 3 27.05.2009 02:20
Задача по матрицам. Поменять местами наименьший и второй по величине элементы Иван 883 Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2009 16:04