[Закрыть]
 
popoff.donetsk.ua
Если долгое время ходить в маске, рано или поздно можно так сжиться с ней, что потеряешь своё истинное лицо.
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Функциональное и логическое программирование - Передача изменяющихся данных в прологе. Поиск минимума без использования списка.

Передача изменяющихся данных в прологе. Поиск минимума без использования списка.

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
Гость kentussharelus url://forum.message:2216
Передача изменяющихся данных в прологе. Поиск минимума без использования списка.
kentussharelus

Здравствуйте! Вот, тут задачка такого рода. Есть список товаров с их названием и ценой, а также датами начала и конца «сезона», то есть времени, когда они дешевле на 25% . Первая часть задачи не особенно трудна - показть названия товаров, подлежащих уценке и их новую цену, если известна текущая дата. Я создал такие предикаты :
tovar(name,day,day,month,month,integer)
И ,собственно, товары такого вида : tovar (Santa,1,1,2,12,500). Что значит :Деды морозы стоят по 500 единиц за штуку и в период с 1.02 по 2.12 их цена падает на 25%.
С первым заданием ообых проблем не было. А вот второе звучало так: вывести из НЕсезонных товаров самый дешевый. Я сделал предикат, который истеннен, когда товар не является в днный момент сезонным. Функция :
nucenka(Name,Day,Month,Cost) :- tovar(Name,Day1,Day2,Month1,Month2,Cost),ucenka3(Day,Month,Day1,Month1,Day2,Month2).
Выводит все несезонные в данный момент товары и их цены. НО, как я бду хранить цену самого дешевого? Ведь для этого нужно 2 действия : сравнить текущий минимум с ценой товара и если проверка успешна, то переопределить тек. минимум. Но во-первых, есть проблема начального значения минимума : мы его ищем, сл-но это бдет переменная, которая никак вначале не инициализирована. Во-вторых, чтобы хранить этот самый текущий минимум нужна, похоже, рекурсия. Но если я запущу рекурсивно nucenka, то она каждый раз будет проверять ВСЕ товары, даже отсечение не поможет. То есть проблемы такие : как хранить текущий минимум (в каком виде и как передавать дальше) и как его переопределть, едь ельзя одновременно и сравнивать 2 параметра и переопределять.
Спасио за внимание. С уважением, kentussharelus

Это сообщение было отредактировано popoff 01.12.07 02:22.
popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:2217

kentussharelus,
Вам нужно:
1. Собрать данные по всем несезонным товарам в один список. Для этого используется встроенный предикат findall.
2. В полученном списке найти минимум. Для этого смотрите стандарные функции в методичке. Есть также решение на моём сайте.
3. Найти все несезонные товары, у которых цена равна найденному в п.2 минимуму.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Гость kentussharelus url://forum.message:2224
kentussharelus

Спасибо большое! :)

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Обмен электронных валют
money.dn.ua