Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
 Аватар для Iriska-kiska
89 / 10 / 0
Регистрация: 28.11.2011
Сообщений: 21

Функция min4, по четырём вещественным возвращающая наименьшее из них

09.04.2012, 14:20. Показов 5008. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дорогие мои!
Помогите пожалуйста!!!
Определите функцию: функция min4, по четырём вещественным возвращающая наименьшее из них.
Ну не как не могу сделать это задание.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2012, 14:20
Ответы с готовыми решениями:

Функция, принимающая три числа, и возвращающая среднее из них
функция на вход принимает три числа должен вернуть среднее среди них например, среди 7, 2, 35 - средним будет 7. Как решить такое?

Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел
Разработать заданные согласно условия функции и сделать в главной программе по два вызова этих функций с различными параметрами. Для...

Функция, принимающая 2 массива и возвращающая ассоциативный массив, составленный из них
Помогите пожалуйста, буду очень благодарен. На языке PHP реализовать функцию, которая в качестве параметров принимает два массива: $M и...

36
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
09.04.2012, 14:43
Haskell
1
2
min4 :: Double -> Double -> Double -> Double -> Double
min4 a b c d = minimum [a,b,c,d]
0
 Аватар для 9Символов
7 / 7 / 0
Регистрация: 25.03.2012
Сообщений: 72
09.04.2012, 15:09
Держи. (А то списки ещё привлекать зачем-то... )
Haskell
1
min4 a b c d = (\a b c d ->(\a b c d -> (\a b c d ->(\a b c d ->(\a b c d -> (\a b c d ->(\a b c d ->(\a b c d -> (\a b c d ->(\a b c d ->(\a b c d -> (\a b c d -> (\a b c d ->min (min a b) (min c d)) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d) a b c d
0
09.04.2012, 16:05

Не по теме:

Цитата Сообщение от 9Символов Посмотреть сообщение
А то списки ещё привлекать зачем-то...
ну, зачем же так тонко шутить?
люди ведь и поверить могут...

0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
09.04.2012, 16:40
9Символов, слишком сложно и запутанно, имхо, гораздо проще и понятней так:

Haskell
1
2
min4 :: Double -> Double -> Double -> Double -> Double
min4 = (. (. min) . (.) . min) . (.) . (.) . min
2
09.04.2012, 16:49

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
гораздо проще и понятней так
ну вот, совсем другое дело... :D
так всё действительно прозрачно...

0
 Аватар для 9Символов
7 / 7 / 0
Регистрация: 25.03.2012
Сообщений: 72
09.04.2012, 17:12
Nameless One, так универсальнее...
Haskell
1
2
min4 :: Ord a => a -> a -> a -> a -> a
min4 = (\w x y z -> ((. (. min) . (.) . min) . (.) . (.) . min) w x y z )
Добавлено через 14 минут
А вот так!
Haskell
1
2
min4 :: Ord a => a -> a -> a -> a -> a
min4 a b c d =if ((if a<b then a else b)<(if c<b then c else d)) then (if a<b then a else b) else (if c<b then c else d)
0
 Аватар для Buckminster
1032 / 703 / 66
Регистрация: 30.01.2012
Сообщений: 714
09.04.2012, 17:19
или так
Haskell
1
min4 a b c d = (sort [a, b, c, d]) !! 0
т.е. так
Haskell
1
min4 a b c d = head $ sort [a,b,c,d]
0
 Аватар для 9Символов
7 / 7 / 0
Регистрация: 25.03.2012
Сообщений: 72
09.04.2012, 17:33

Haskell
1
2
3
4
5
min4 :: Ord a => a -> a -> a -> a -> a
min4 a b c d = if d<a then i d b c else i a b c where
 i a b c = if c<a then kill c b else kill a b
 kill a b = if a<b then you a else you b
 you x = x
0
 Аватар для Buckminster
1032 / 703 / 66
Регистрация: 30.01.2012
Сообщений: 714
09.04.2012, 17:44
Haskell
1
min4 a b c d = foldr (\a b -> [a, b] !! div (signum (a - b) + 1) 2) a [b, c, d]
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
09.04.2012, 18:16
Через комбинаторы:

Haskell
1
2
3
4
5
6
7
8
k x y = x
s x y z = x z (y z)
b x y z = x (y z)
c x y z = x z y
cond p f g x = if p x then f x else g x
y f = f (y f)
 
min4 m n l j = y (b (cond null (k j)) (b (s (b min head)) (c b tail))) [m,n,l]
1
 Аватар для 9Символов
7 / 7 / 0
Регистрация: 25.03.2012
Сообщений: 72
09.04.2012, 18:31
Haskell
1
2
min4 ::  Double -> Double -> Double -> Double -> Double
min4 a b c d = ((/(fromIntegral (length (b:c:d:[]))::Double)) . sum . map (min a)) (b:c:d:[])
Добавлено через 2 минуты
Цитата Сообщение от Nameless One Посмотреть сообщение
Через комбинаторы:

Haskell
1
2
3
4
5
6
7
8
k x y = x
s x y z = x z (y z)
b x y z = x (y z)
c x y z = x z y
cond p f g x = if p x then f x else g x
y f = f (y f)
 
min4 m n l j = y (b (cond null (k j)) (b (s (b min head)) (c b tail))) [m,n,l]

Не по теме:

Ладно, ты победил.
Модераторы! Сотрите все остальные решения. :p:D
(шутка, хахахаха)



Добавлено через 12 минут
Fortran
1
2
3
min4 a b c d = min (min (min a b) c) d
 
min4_ a b c d = ((min a) . (min b). (min c)) d
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
09.04.2012, 18:49
Цитата Сообщение от 9Символов Посмотреть сообщение
Haskell
1
min4 a b c d = min (min (min a b) c) d
... немного преобразований, и получаем еще одно бесточечное определение:

Haskell
1
min4 = ((min .) .) . (min .) . min
1
 Аватар для 9Символов
7 / 7 / 0
Регистрация: 25.03.2012
Сообщений: 72
09.04.2012, 19:46
Haskell
1
2
min__ :: (Ord a,Show a) => a->a->a->a->a
min__ = (( . ) . ( . ) . ( . )) min ((( . ) . ( . )) min (min))
Было бы у меня 3 руки... (хотя и двумя неплохо управляюсь)
0
 Аватар для Buckminster
1032 / 703 / 66
Регистрация: 30.01.2012
Сообщений: 714
10.04.2012, 03:19
и обобщим:
Haskell
1
2
3
4
5
6
7
8
class Variadic r where 
    minV :: Double -> r
 
instance Variadic Double where
    minV = id
 
instance (Real a, Variadic r) => Variadic (a -> r) where
    minV x = minV . (min x) . fromRational . toRational
Haskell
1
2
3
4
5
6
7
8
*Varidic> minV 2 :: Double
2.0
*Varidic> minV 5 2 :: Double
2.0
*Varidic> minV 5 2 1 :: Double
1.0
*Varidic> minV 5 (-1) 2 1 :: Double
-1.0
2
 Аватар для 9Символов
7 / 7 / 0
Регистрация: 25.03.2012
Сообщений: 72
10.04.2012, 05:32
Цитата Сообщение от Buckminster Посмотреть сообщение
и обобщим:
Haskell
1
2
3
4
5
6
7
8
class Variadic r where 
    minV :: Double -> r
 
instance Variadic Double where
    minV = id
 
instance (Real a, Variadic r) => Variadic (a -> r) where
    minV x = minV . (min x) . fromRational . toRational
Haskell
1
2
3
4
5
6
7
8
*Varidic> minV 2 :: Double
2.0
*Varidic> minV 5 2 :: Double
2.0
*Varidic> minV 5 2 1 :: Double
1.0
*Varidic> minV 5 (-1) 2 1 :: Double
-1.0

Не по теме:

Вот за это спасибо огромное! Как раз задумывался о том, как подобную унеиверсальную функцию сделать можно.

0
 Аватар для Iriska-kiska
89 / 10 / 0
Регистрация: 28.11.2011
Сообщений: 21
10.04.2012, 09:28  [ТС]
Ребята! Спасибо Вам большое за просвещение!
0
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
10.04.2012, 19:57
Nameless One, ты каким-то математическим аппаратом воспользовался для построения подобных определений (в бесточечном стиле)? Я, если честно, пробовал в уме разобрать, но запутался, и пришлось на бумажке зарисовывать.
0
 Аватар для Buckminster
1032 / 703 / 66
Регистрация: 30.01.2012
Сообщений: 714
10.04.2012, 20:48
2
 Аватар для 9Символов
7 / 7 / 0
Регистрация: 25.03.2012
Сообщений: 72
11.04.2012, 08:08
Цитата Сообщение от Buckminster Посмотреть сообщение
Спасибо, а то я офигивал, как вы так делаете... А почему он называется безточечным?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2012, 08:08
Помогаю со студенческими работами здесь

Функция возвращающая массив
#include &lt;iostream&gt; #include &quot;conio.h&quot; int *convertToBin() { int a = { 1, 2, 3, 4, 5}; return a; } int...

Функция, возвращающая массив
Возможно ли что функция возвращает массив. Если да то было бы хорошо листинг программы где выполняется такая реализация Спасибо!

Функция, возвращающая массив
Нужно вернуть из функции массив. int F(int a,int* b) { for(int i=0;i&lt;a;i++) *b++; for(int i=0;i&lt;3;i++)...

Функция, возвращающая константу
Почему добавление спецификатора const ничего не меняет? const int f(int a) { return a; } int main(int argc, char *argv)...

Функция, возвращающая указатель
Здравствуйте. Пускай есть класс Some_type и массив такого класса. Можно ли функцией Some_type* some_name (some_type) заполнять массив,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru