|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2013, 15:48 | #1 |
Регистрация: 26.10.2012
Сообщений: 5
|
Функция для программы на Haskell
Здравствуйте, задали дополнить программу одной функций .Вот само задание для основной программы и его код:
Код HTML:
В электронной записной книжке хранятся записи следующих видов: напоминания о днях рождения знакомых, телефоны знакомых и назначенные встречи. Напоминание состоит из имени знакомого и даты (день и месяц). Запись о телефоне должна содержать имя человека и его телефон. Информация о назначенной встрече содержит дату встречи (день, месяц, год) и краткое описание (можно представлять строкой). Разработайте тип данных, представляющий такую запись. Записная книжка является списком записей. Определите следующие функции: 1) getByName, возвращающая информацию о человеке с указанным именем (его телефон и дату рождения). 2) getByLetter, возвращающая список людей, о которых есть информация в записной книжке и чье имя начинается на указанную букву. 3) getAssignment, возвращающая по указанной дате список дел (информация о назначенных встречах и телефоны друзей, которых нужно поздравить в этот день). Код HTML:
data Note a b = BDate a (b,b,b) | Phone a b | Meet (b,b,b) a deriving (Show, Eq)
book :: [Note String Integer]
book = [Phone "Ivan" 89209321602, BDate "Ivan" (16,11,1994), Phone "Igor" 89209206411, BDate "Igor" (26,26,1994), Phone "Evgeney" 89209081511, BDate "Evgeney" (11,08,1994), Meet (14,05,2013) "Ivan"]
-- Getting Name
getName :: Note String Integer -> String
getName (BDate a _) = a
getName (Phone a _) = a
getName _ = ""
--Getting BDate
getBDate :: [Note String Integer] -> String -> (Integer,Integer,Integer)
getBDate [] _ = (0, 0, 0)
getBDate ((BDate a (b, c, d)):xs) n = if a==n then (b, c, d) else getBDate xs n
getBDate (_:xs) n = getBDate xs n
getPhone :: [Note String Integer] -> String -> Integer
getPhone [] _ = 0
getPhone ((Phone a b):xs) n = if a==n then b else getPhone xs n
getPhone (_:xs) n = getPhone xs n
getByName :: [Note String Integer] -> String -> (String, (Integer,Integer,Integer), Integer)
getByName [] _ = ("", (0,0,0), 0)
getByName ((BDate a (b,c,d)):xs) n = if a == n then (n, (b, c, d) , getPhone book n)
else getByName xs n
getByName ((Phone a b):xs) n = if a == n then (n, getBDate xs n , b)
else getByName xs n
getByName (_:xs) n = getByName xs n
getByLetter :: [Note String Integer] -> Char -> String -> [String]
getByLetter [] _ _ = []
getByLetter ((BDate a _):xs) n m = if (head a) == n && m /= a then a : getByLetter xs n a
else getByLetter xs n m
getByLetter ((Phone a _):xs) n m = if (head a) == n && m /= a then a : getByLetter xs n a
else getByLetter xs n m
getByLetter (x:xs) n m = getByLetter xs n m
getAssigment :: [Note String Integer] -> (Integer,Integer,Integer) -> [(String,Integer)]
getAssigment [] _ = []
getAssigment ((BDate a (b,c,e)):xs) (d,m,y) = if ((b==d)&&(c==m)&&((e==y)||(e<y))) then (a, getPhone book a) : getAssigment xs (d,m,y)
else getAssigment xs (d,m,y)
getAssigment ((Meet (b,c,e) a):xs) (d,m,y) = if ((b==d)&&(c==m)&&((e==y)||(e<y))) then (a, getPhone book a) : getAssigment xs (d,m,y)
else getAssigment xs (d,m,y)
getAssigment (_:xs) (d,m,y) = getAssigment xs (d,m,y)
getDR :: [Note String Integer] -> (Integer,Integer,Integer) -> String
getDR [] _ = []
getAssigment ((BDate a (b,c,e)):xs) (d,m,y) = if ((e==y)&&(c==m)&&((b==d)||(e<y)&&(c<m)&&(b<d))) then (a, getPhone book a) : getAssigment xs (d,m,y)
else getAssigment xs (d,m,y)
"Написать функцию, для нахождения человека с Датой Рождения ближайшей к указной дате" т.е вводим дату рождения в ввиде (день,месяц, год) и программа выводит имя человека у которого его дата рождения ближе всего к введенной.Помогите пожалуйста |
02.06.2013, 20:12 | #2 |
Регистрация: 26.10.2012
Сообщений: 5
|
подскажите пожалуйста очень надо, в хаскеле плохо понимаю
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Haskell | KrotikDJ | Помощь студентам | 5 | 27.05.2013 20:49 |
функция извлечения и тут же включение USB Flash-накопителя в Windows 7 для Delphi 7 для программы | Stetolik | Помощь студентам | 2 | 14.01.2013 12:33 |
Процедура или функция для повторного действия для разных объектов на форме | abzhapparovmaxat | Общие вопросы Delphi | 13 | 14.10.2011 14:37 |
Haskell | Katech | Свободное общение | 5 | 12.07.2009 23:40 |
Haskell | Анастасия52 | Помощь студентам | 0 | 05.05.2009 14:09 |