Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа со списками, поиск максимума 
V
    Опции темы
Паровоз
Дата 29.10.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.10.2008

Репутация: нет
Всего: нет



Здравствуйте.
Не могу сделать прогу, может, подскажете, что не так?
Теоретически, приведенная ниже прога должна выводить список из чисел без минимального и максимального элементов. Но не выводит...

domains
il=integer*
v=integer
l=v*
predicates
addtoend(integer,il,il)
addtoendprint(il,il)
min(l,v)
max(l,v)

clauses
addtoendprint(L,Res):-
write("novoe chislo (vyhod-Enter):"),
readint(X),min([H|T],MT),max([H|T],MH),
!,
addtoend(X,L,L1),
write(L1),nl,
addtoendprint(L1,Res).
addtoendprint(L,L).

min([H|T],MT):-min(T,MT),MT<=H,!.
min([H|_],H).

max([H|T],MH):-max(T,MH),MH>=H,!.
max([H|_],H).

addtoend(X,[],[X]).
addtoend(X,[A|L],[A|L1]):-addtoend(X,L,L1).

goal
addtoendprint([],[L]).

Пролог при компиляции выдает ошибки, как их исправить не знаю. 
PM MAIL   Вверх
Паровоз
Дата 22.1.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.10.2008

Репутация: нет
Всего: нет



теперь могу. Получилось так:


domains

  array=number*
  number=integer

predicates

  vvod(integer,array)
  find_min(array,number)
  find_max(array,number)
  remove(integer,array,array)
  
clauses

  vvod(0,[]):-!.
  vvod(N,[H|T]):-readint(H),  N1=N-1,!, vvod(N1,T).

  find_min([X],X).
  find_min([X,Y|T],Min):-
    X>Y,
    find_min([Y|T],Min).
  find_min([X,Y|T],Min):-
    X<=Y,
    find_min([X|T],Min).

  
  find_max([X],X).
  find_max([X,Y|T],Max):-
    X<=Y,
    find_max([Y|T],Max).
  find_max([X,Y|T],Max):-
    X>Y,
    find_max([X|T],Max).

  remove(_,[],[]).
  remove(X,[H|T],L):-H=X,!,remove(X,T,L).
  remove(X,[H|T],[H|L]):-remove(X,T,L).

  
goal

  clearwindow,
  write("Vvedite N: "),
  readint(N),nl,
  write("Vvedite spisok"),nl,
  vvod(N,X),
  nl,
  find_min(X,Min),
  find_max(X,Max),
  write("spisok: ",X),
  nl,
  write("Minimum: "),
  write(Min),
  nl,
  write("Maximum: "),
  write(Max),
  nl,
  remove(Min,X,Y),
  remove(Max,Y,Y1),
  write(Y1),
  readchar(_),
 exit(0).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0386 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.