Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
1 / 1 / 0
Регистрация: 29.04.2014
Сообщений: 29
1

Пользовательские типы данных

09.11.2015, 16:22. Показов 4050. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реализовать программу, которая принимает список овощей с ценой без НДС, количеством единиц, а также типом товара с точки зрения вычисления НДС (обычный, «льготный»).
На выходе - сумма по чеку, включая НДС.
Помогите с задачей.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2015, 16:22
Ответы с готовыми решениями:

Пользовательские типы данных
Схожая задача... Нужно ввесть Тип Товара, название, цену, количество. Затем получить общий чек с...

Пользовательские типы данных
Объясните пожалуйста как работают перечисления,для чего нужны и как их использовать. Читал лекции и...

Пользовательские типы данных
Создать текстовый файл, состоящий из случайного количества (не более 30-и) строк. В каждой строке...

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

15
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
09.11.2015, 17:15 2
А как вычисляется "обычный и льготный НДС"?
0
1 / 1 / 0
Регистрация: 29.04.2014
Сообщений: 29
09.11.2015, 17:31  [ТС] 3
Цитата Сообщение от Catstail Посмотреть сообщение
А как вычисляется "обычный и льготный НДС"?
Обычный *0.21
Льготный *0.11
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
09.11.2015, 18:06 4
Лучший ответ Сообщение было отмечено HaveMono как решение

Решение

Haskell
1
2
3
4
5
6
7
8
9
data Veg = Veg { name :: String, price :: Double, quant :: Int, priv :: Bool} deriving (Eq,Show)
 
calc :: [Veg] -> Double
calc  = foldl (\ acc v -> if (priv v) then acc+(price v)*(fromIntegral (quant v))*1.11 else
                                         acc+(price v)*(fromIntegral (quant v))*1.21) 0
 
Main> calc [Veg {name="mellon", price=12.00, quant=1, priv=True}, Veg {name="tomato", price=10.23, quant=5, priv=F
alse}]
75.2115
1
0 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 9
10.04.2016, 20:44 5
У меня поожая задачка:

Цель: ознакомиться с принципом вызова функций с применением «pattern matching».

Задание: реализовать программу, которая принимает список товаров с указанной ценой без НДС, количеством единиц, а также типом товара с точки зрения вычисления НДС (обычный, «льготный»).

На выходе - сумма по чеку, включая НДС.
я взял предыдущий написаный код и у меня след ошибка
LAB1.hs:7:1:
Parse error: naked expression at top level
Perhaps you intended to use TemplateHaskell
Failed, modules loaded: none.
подскажите для чайника что делаю не так?
0
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
10.04.2016, 20:54 6
Jevgenijs, в предыдущем коде строки 1-5 действительно нужно сохранить в файле. А в строках 7-9 пример вызова из интерпретатора после загрузки этого файла. В общем, целый файл для компиляции и выполнения
Haskell
1
2
3
4
5
6
7
8
9
data Veg = Veg { name :: String, price :: Double, quant :: Int, priv :: Bool} deriving (Eq,Show)
 
calc :: [Veg] -> Double
calc  = foldl (\ acc v -> if (priv v) then acc+(price v)*(fromIntegral (quant v))*1.11 else
                                         acc+(price v)*(fromIntegral (quant v))*1.21) 0
 
main :: IO ()
main =  print $ calc [Veg {name="mellon", price=12.00, quant=1, priv=True},
                      Veg {name="tomato", price=10.23, quant=5, priv=False}]
2
0 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 9
10.04.2016, 22:12 7
Опять вопрос
ввожу к примеру список ["pencil", 12 , 10 , 1 ]
получаю
<interactive>:53:12:
No instance for (Num [Char]) arising from the literal ‘12’
In the expression: 12
In the expression: ["pencil", 12, 10, 1]
In an equation for ‘it’: it = ["pencil", 12, 10, ....]
правильно ли я задаю список с параметрами?
0
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
10.04.2016, 22:24 8
Jevgenijs, списки в Haskell должны состоять из элементов одного типа. Нельзя и строку и число в одном списке.
1
2 / 2 / 0
Регистрация: 08.05.2015
Сообщений: 22
30.11.2016, 18:40 9
KolodeznyDiver, этот фолдл я так понял левоассоцативное, но так и не понял с какой целью применяется, для чего этот символ / используется? И как понять эту переменную акк в -> ? иф (прив в) это в случае когда принимает значение истина-ложь, то тогда эта пееременная acc какого-то товара + цена данного товара, количество в скобках и умножается на конкретный налог, верно
0
43 / 41 / 8
Регистрация: 17.04.2016
Сообщений: 39
30.11.2016, 18:56 10
С символа \ начинается лямбда-выражение. Оно обозначает функцию и имеет вид \{переменные} -> {выражение}
Например, \x y z -> x + y + z -- функция, которая складывает три числа. Её можно было бы объявить и обычным способом
В примере Catstail`a, получается
Haskell
1
2
3
4
5
6
7
8
9
10
11
data Veg = Veg { name :: String, price :: Double, quant :: Int, priv :: Bool} deriving (Eq,Show)
 
calc :: [Veg] -> Double
calc  = foldl foldingFunction 0
 
foldingFunction acc v = if (priv v) then acc+(price v)*(fromIntegral (quant v))*1.11
                                              else acc+(price v)*(fromIntegral (quant v))*1.21
 
main :: IO ()
main =  print $ calc [Veg {name="mellon", price=12.00, quant=1, priv=True},
                      Veg {name="tomato", price=10.23, quant=5, priv=False}]
2
2 / 2 / 0
Регистрация: 08.05.2015
Сообщений: 22
30.11.2016, 19:11 11
yegorov, yegorov, priv :: Bool} для чего вот используется эта истина-ложь? с какой целью в этом вычислении?
0
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
30.11.2016, 19:21 12
alq94, Рекомендую вначале почитать книжку https://www.ohaskell.guide/ или любой другой учебник по haskell, которые приведены в Полезные ссылки по Haskell
0
2 / 2 / 0
Регистрация: 08.05.2015
Сообщений: 22
30.11.2016, 19:55 13
calc [Veg {name="mellon", price=12.00, quant=1, priv=True},
Мeg {name="tomato", price=10.23, quant=5, priv=False}]

почему в одном написано труе, а во втором, там где томато фалсе? это по своему желанию определили?
0
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
30.11.2016, 20:10 14
Цитата Сообщение от alq94 Посмотреть сообщение
почему в одном написано труе, а во втором, там где томато фалсе? это по своему желанию определили?
Для проверки обеих веток if.
0
2 / 2 / 0
Регистрация: 08.05.2015
Сообщений: 22
10.12.2016, 00:18 15
(\ acc v -> if (priv v) then acc+(price ......

Для чего используется эта переменная acc?
1
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
10.12.2016, 04:40 16
alq94, накапливает сумму которая будет результатом.
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Рекомендую вначале почитать книжку https://www.ohaskell.guide/ или любой другой учебник по haskell, которые приведены в Полезные ссылки по Haskell
0
10.12.2016, 04:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2016, 04:40
Помогаю со студенческими работами здесь

Пользовательские типы данных в параметрах web методов
Доброе время суток ! Например я определил сборку со структурой, которая используется как параметр...

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

Пользовательские типы данных. Структура "Государство"
Структура «Государство»: название; столица; численность населения; занимаемая площадь. Вычисляемое...

Пользовательские типы (перечислимые типы)
Дан временной период (число, месяц, год начала - число, месяц, год конца), год своего рождения и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru