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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2013, 10:24   #1
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию Prolog.Списки.Ввод/вывод

День добрый! Имеется следующий код на Прологе.
Код:
domains
ListI=integer*
predicates
nondeterm change(integer,integer,ListI,ListI)
clauses
change(_,_,[],[]).
change(X1,X2,[X1|T],[X2|T]):-change(X1,X2,T,T1).
change(X1,X2,[H|T],[H|T1]):-X1<>H,change(X1,X2,T,T1).
Программа заменяет выбранные вхождения в списке другим (X2) значением.
Необходимо по требованию преподавателя, чтобы ввод списка, исходного вхождения, нового числа вводились с клавиатуры пользователем, а потом выводился измененный список.
Пыталась прописать это в goal, но ничего путного не вышло. Программа вообще отказывалась запускаться. Очень прошу Вас помочь!
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 21.10.2013, 12:47   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

вобщем ты видимо в турбо прологе пишешь )
там при вводе явно указывается тип, ввести список вроде бы так просто нельзя

Тебе как надо ввод организовать?
можно после каждого элмента спрашивать завершен ли ввод
можно сначала узнать количество элементов списка
можно вводить элменты. пока не будет введено какое-то определенное значение (ноль, например)
можно вводить до первого неправильного значения (вводили целые числа - юзер ввел строку)
можно считывать строки, преобразовывать их в числа, а вводить пока юзер не наберет exit

уточни что ты хочешь
rrrFer вне форума Ответить с цитированием
Старый 21.10.2013, 16:29   #3
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Да, я пишу в турбо прологе.
Нам не говорили как именно надо организовать ввод. Просто сказали что он нужен. А дальше уже полет нашей фантазии, так сказать.
Может вначале указывать количество элементов? Думаю этот код будет попроще, чтобы его понять.
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 21.10.2013, 17:33   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

не помню я как там в турбопролог это делается...
но примерно так:
Код:
p(L):-
  readint(N),!,
  p(L, N).
p([], N):-N <= 0, !.
p([H|T], N):-
  readint(H), !, NN = N - 1, p(T, NN).
rrrFer вне форума Ответить с цитированием
Старый 21.10.2013, 20:11   #5
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Большое спасибо! С вводом разобралась! Вы мне очень помогли!!!
Не могли бы еще подсказать с выводом?
Когда я вывожу, у меня получается следующий вид:
Spisok: 1,[0,2,8]
А как сделать, чтобы выводилось без квадратных скобок? Просто через запятую? То есть:
spisok: 1,0,2,8
Можно это как то реализовать? Подскажите пожалуйста!
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 21.10.2013, 20:17   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
p([]):-!.
p([H]):-
  !, write(H).
p([H|T]):-
  !, write(H), write(","), p(T).
так? - не проверял опять же, если опечатался - поправьте сами.
rrrFer вне форума Ответить с цитированием
Старый 21.10.2013, 20:44   #7
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Огромнейшее Вам спасибо! Все работает!!!)))
Еще раз большое спасибо!
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 21.10.2013, 21:13   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

да пжалсто, обращайтесь если что ))
rrrFer вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Prolog. Списки kikisa Помощь студентам 1 16.06.2012 13:36
Списки и бинарные деревья на Visual Prolog 5.2 DarkSwan Помощь студентам 0 11.02.2011 17:05
Линейные связные списки и файловый ввод-вывод coll3ctor Помощь студентам 0 02.05.2010 14:54