Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Haskell
Перезагрузить страницу Параметры функции должеы считываться с клавиатуры
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Анна Анна Анна Анна вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2010
Smile Параметры функции должеы считываться с клавиатуры - 12.12.2010, 22:32

Помогите реализовать программу с помощью ф-ий высшего порядка?

В агентстве недвижимости продают квартиры, комнаты и частные дома. Квартиры характеризуются этажом, площадью, и этажностью дома. Комната характеризуется, помимо этого, площадью комнаты (в дополнение к площади всей квартиры). Частные дома характеризуются только площадью. В базе данных хранятся пары значений, первое из которых представляет объект недвижимости, а второе – его цену. Определите тип данных, представляющий информацию о таких объектах недвижимости. Определите след. ф-ии:
1) getHouse
2) getByPrice
3) getByLevel
4) getExceptBounds
Разработайте тип данных, представляющий различные требования к объектам недвижимости: желаемый тип объекта недвижимости, минимальная площадь, максимальная ценна, ограничения на этаж. Разработайте ф-ию query, которая по списку требований выбирает из базы данных те объекты недвижимости, которые удовлетворяют всем требованиям.

haskell Код:
data NedvObject = Flat Int Int Int | Room Int Int Int Int | House Int deriving (Eq,Show)
-- Flat этаж площадь этажность | Room этаж площадь этажность пл.комнаты | House площадь
data Requirements = Type String | MinArea Int | MaxPrice Int | NeedFloor Int

-- getHouses выбирает из базы данных частные дома
getHouses :: [(NedvObject,Int)] -> [(NedvObject,Int)]
getHouses [] = []
getHouses ((House x,y):xs) = (House x,y):getHouses xs
getHouses (_:xs) = getHouses xs

--getByPrice выбирает из базы объекты, у которых цена меньше заданной
getByPrice :: [(NedvObject,Int)] -> Int -> [(NedvObject,Int)]
getByPrice [] _ = []
getByPrice ((House a,y):xs) price = if y<price then (House a,y):getByPrice xs price else getByPrice xs price
getByPrice ((Flat a b c,y):xs) price = if y<price then (Flat a b c,y):getByPrice xs price else getByPrice xs price
getByPrice ((Room a b c d,y):xs) price = if y<price then (Room a b c d,y):getByPrice xs price else getByPrice xs price

--getByLevel выбирает квартиры на заданном этаже
getByLevel :: [(NedvObject,Int)] -> Int -> [(NedvObject,Int)]
getByLevel [] _ = []
getByLevel ((Flat x y z,a):xs) floor = if x==floor then (Flat x y z,a):getByLevel xs floor else getByLevel xs floor
getByLevel (_:xs) floor = getByLevel xs floor

--getExceptBounds выбирает квартиры не на крайних этажах
getExceptBounds :: [(NedvObject,Int)] -> [(NedvObject,Int)]
getExceptBounds [] = []
getExceptBounds ((Flat x y z,a):xs) = if (x/=z)&&(x/=1) then (Flat x y z,a):getExceptBounds xs else getExceptBounds xs
getExceptBounds (_:xs) = getExceptBounds xs

--query выбирает объекты, соотв. списку требований
--
getByArea :: [(NedvObject,Int)] -> Int -> [(NedvObject,Int)]
getByArea [] _ = []
getByArea ((Flat x y z,a):xs) area = if y>=area then (Flat x y z,a):getByArea xs area else getByArea xs area
getByArea ((Room x y z zz,a):xs) area = if y>=area then (Room x y z zz,a):getByArea xs area else getByArea xs area
getByArea ((House y,a):xs) area = if y>=area then (House y,a):getByArea xs area else getByArea xs area
--
getByType :: [(NedvObject,Int)] -> String -> [(NedvObject,Int)]
getByType [] _ = []
getByType (x:xs) t = case x of
                     (Flat xx y z,a) -> if t=="Flat" then x:getByType xs t else getByType xs t
                     (Room xx y z zz,a) -> if t=="Room" then x:getByType xs t else getByType xs t
                     (House y,a) -> if t=="House" then x:getByType xs t else getByType xs t
--
query :: [(NedvObject,Int)] -> [Requirements] -> [(NedvObject,Int)]
query [] _ = []
query x [] = x
query x (y:ys) = case y of
                 MaxPrice price -> query (getByPrice x price) ys
                 NeedFloor floor -> query (getByLevel x floor) ys
                 MinArea area -> query (getByArea x area) ys
                 Type t -> query (getByType x t) ys
Ответить с цитированием
  (#2 (permalink)) Старый
calabi-yau calabi-yau вне форума
Member
 
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 10 сообщениях
Регистрация: 28.09.2009
По умолчанию 13.12.2010, 00:08

здесь.


Don't fear the Monad
Ответить с цитированием
  (#3 (permalink)) Старый
Анна Анна Анна Анна вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.12.2010
По умолчанию 13.12.2010, 00:19

Спасибо. значит моя реализация здесь тоже есть?
Ответить с цитированием
  (#4 (permalink)) Старый
Damux Damux вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2011
По умолчанию 19.10.2011, 21:04

Скажите пожалуйста что надо написать после мейн чтобы проверить что данная программа работает
и где должны храниться данные об этом всем???
а то что то не пойму никак...
подскажите пожалуйста
Ответить с цитированием
  (#5 (permalink)) Старый
Иулия Иулия вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2015
По умолчанию 16.11.2015, 15:54

помогите, пжлст, написать тест для данного кода
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параметры видеокарт fresh Видеокарты 15 16.03.2012 09:13
Необходимо реализовать данную программу так, чтобы параметры функции считывались с кл belkaonrain Haskell 2 14.12.2010 00:37
Реализовать программу парамметры функции должны считываться с клавиатуры Анна Анна Haskell 1 10.12.2010 23:41
Параметры компа Elidan Подбор комплектующих 7 17.06.2008 21:59
Параметры компа Elidan Разное 0 15.06.2008 11:42
Функции в Word - как прикрутить автозапуск функции? Godfather Visual Basic 1 17.11.2005 19:32
Как узнать какие есть функции и какие у них параметры для Word и Excel imported_Makc C++ Builder 5 12.08.2005 20:18
Параметры в XSL как их менять Anton_Gusev XML & WML 1 17.05.2005 13:02
Функции findfast и findnext Как вторая из них узнаёт, какие параметры были переданы Jordan С/С++ 2 12.07.2004 16:47
как сделать запись, которая должна считываться из и записываться в файл Aster-X Delphi 44 25.12.2003 15:24
Функции клавиатуры и мыши блокировка imported_Iron WinAPI 1 20.10.2003 15:07
Какие функции имеются под MFC или API-функции для работы с Hint Anonymous Visual C++ 1 12.10.2003 00:15



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов