Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Haskell
Перезагрузить страницу Область на плоскости является либо прямоугольником, либо кругом
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
amorita amorita вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2010
Talking Область на плоскости является либо прямоугольником, либо кругом - 07.11.2010, 12:45

Область на плоскости является либо прямоугольником, либо кру-
гом, либо объединением областей, либо их пересечением. Прямо-
угольник характеризуется координатами левого нижнего и правого
верхнего углов, круг — координатами центра и радиусом. Разра-
ботайте структуру данных, представляющую область описанного
вида. Определите следующие функции:

1) contains, проверяющая, что заданная точка попадает в об-
ласть.

2) isRectangular, проверяющая, что область задается только
прямоугольниками.

3) isEmpty, проверяющая, что область пуста, т. е. ни одна точка
плоскости не попадает в нее.
Ответить с цитированием
  (#2 (permalink)) Старый
calabi-yau calabi-yau вне форума
Member
 
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 10 сообщениях
Регистрация: 28.09.2009
По умолчанию 07.11.2010, 20:53

[cpp]
type Point2 = (Float, Float)

data Area = Rectangular Point2 Point2
| Circle Point2 Float
| Union [Area]
| Intersection [Area]
deriving Show

contains :: Area -> Point2 -> Bool
contains (Rectangular (x, y) (x1, y1)) (x2, y2)
= and [x <= x2, x1 >= x2,
y <= y2, y1 >= y2]

contains (Circle (x, y) r) (x2, y2) = ((x-x2)^2+(y-y2)^2) <= r^2

contains (Union t) p = any (\t1 -> contains t1 p) t
contains (Intersection t) p = all (\t1 -> contains t1 p) t


isRectangular :: Area -> Bool
isRectangular (Rectangular _ _) = True
isRectangular (Union t) = all isRectangular t
isRectangular (Intersection t) = all isRectangular t
isRectangular _ = False


isEmpty :: Area -> [Point2] -> Bool
isEmpty area ps = not $ any (contains area) ps
[/cpp]


Don't fear the Monad
Ответить с цитированием
  (#3 (permalink)) Старый
amorita amorita вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2010
По умолчанию 08.11.2010, 15:58

Он у меня ругается Syntax error in input (unexpected `=')
Ответить с цитированием
  (#4 (permalink)) Старый
calabi-yau calabi-yau вне форума
Member
 
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 10 сообщениях
Регистрация: 28.09.2009
По умолчанию 08.11.2010, 18:02

Цитата:
Сообщение от amorita Посмотреть сообщение
Он у меня ругается Syntax error in input (unexpected `=')
У меня все работает. Возможно отступ где съело.


Don't fear the Monad
Ответить с цитированием
  (#5 (permalink)) Старый
amorita amorita вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2010
По умолчанию 08.11.2010, 20:41

Цитата:
Сообщение от calabi-yau Посмотреть сообщение
У меня все работает. Возможно отступ где съело.
Скорей всего, он у меня иногда глючит))))
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
amorita amorita вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2010
По умолчанию 08.11.2010, 20:42

Спасибо еще раз
Ответить с цитированием
  (#7 (permalink)) Старый
sheldon sheldon вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.11.2010
Thumbs up 08.11.2010, 23:28

и от меня ещё раз спасибо
Ответить с цитированием
  (#8 (permalink)) Старый
amorita amorita вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2010
По умолчанию 16.11.2010, 11:04

Добрый день, извините еще раз побеспокою, не могли бы вы пояснить эту строчку contains (Union t) p = any (\t1 -> contains t1 p) t
Ответить с цитированием
  (#9 (permalink)) Старый
calabi-yau calabi-yau вне форума
Member
 
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 10 сообщениях
Регистрация: 28.09.2009
По умолчанию 16.11.2010, 12:01

Цитата:
Сообщение от amorita Посмотреть сообщение
Добрый день, извините еще раз побеспокою, не могли бы вы пояснить эту строчку contains (Union t) p = any (\t1 -> contains t1 p) t
any функция возвращает True, если существует, по крайней мере, один элемент из списка (t) удовлетворяющий предикату (\t1 -> contains t1 p), т.е. он принимает значение True.

для
haskell Код:
contains (Intersection t) p = all (\t1 -> contains t1 p) t
аналогично. но, функция возвращает True в случае, если все элементы удовлетворяют предикату.


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

А может кто-нибудь привести пример ввода и вывода? А то что-то я туплю, не пойму как.....
Ответить с цитированием
  (#11 (permalink)) Старый
calabi-yau calabi-yau вне форума
Member
 
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 10 сообщениях
Регистрация: 28.09.2009
По умолчанию 28.04.2011, 18:39

Цитата:
Сообщение от Valdes Посмотреть сообщение
А может кто-нибудь привести пример ввода и вывода? А то что-то я туплю, не пойму как.....
добавить инстанс Read к Area:
haskell Код:
deriving (Show, Read)
использовать:
haskell Код:
containsIO = do
    { area <- readLn; point <- readLn        
    ; print (contains area point)        
    }


Don't fear the Monad
Ответить с цитированием
  (#12 (permalink)) Старый
Valdes Valdes вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.04.2011
По умолчанию 29.04.2011, 02:44

Cпасибо за ответ
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
markel markel вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.12.2011
По умолчанию 15.12.2011, 00:26

а у меня на вторую строку ругается((
Ответить с цитированием
  (#14 (permalink)) Старый
calabi-yau calabi-yau вне форума
Member
 
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 10 сообщениях
Регистрация: 28.09.2009
По умолчанию 15.12.2011, 00:37

Цитата:
Сообщение от markel Посмотреть сообщение
а у меня на вторую строку ругается((
вероятно нарушена разбивка текста программы.
haskell Код:
data Area = Rectangular Point2 Point2
          | Circle Point2 Float
          | Union [Area]
          | Intersection [Area]
          deriving Show

contains :: Area -> Point2 -> Bool
contains (Rectangular (x, y) (x1, y1)) (x2, y2)
  = and [x <= x2, x1 >= x2,
         y <= y2, y1 >= y2]


Don't fear the Monad
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Либо АМД тупит, либо я scovoroda Процессоры 11 24.01.2012 20:54
Компьютер загружается только в безопасном режиме, в обычном - либо не грузится, либо ElusiveMoth Любые вопросы от новичков 21 20.09.2011 04:27
Решает ли чипсет что-либо? artem2011 Материнские платы 3 21.03.2011 14:19
Missing OS, либо Reboot And Select... Boost Любые вопросы от новичков 2 27.01.2011 18:02
Область на плоскости является либо прямоугольником sheldon Haskell 10 14.11.2010 16:25
Либо с Линуксом, либо с компом... Анджей LINUX 2 26.08.2010 00:42
Клавиши на клавиатуре могут быть либо управляющими,либо алфавитно-цифровыми Amatory Haskell 8 09.12.2009 01:27
Кто либо ставил такую ОЗУ? SC Память 3 19.03.2009 21:06
Диапазон содержит либо текст, либо цифры bank_notes Visual Basic 3 06.10.2008 21:46
Приложение вылетает без каких либо уведомлений Na-Krul .NET 6 10.07.2008 11:08
Вакансия: Разработчик С/С++либо C# либо Java leto Работа 0 11.10.2006 13:14



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