Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
61 / 61 / 12
Регистрация: 11.12.2009
Сообщений: 248

Функция для 5 чисел

19.11.2013, 19:15. Показов 2007. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Столкнулся с проблемой. Нужно создать функцию которая принимает 5 чисел. Найти минимальное и максимальное по модулю и если они целые то сформировать из этих 2 чисел список, иначе подсчитать среднее арифметическое.

Как я не крутил не идет у меня эта функция. Прошу помощи знающих.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2013, 19:15
Ответы с готовыми решениями:

Функция F(n) определена для целых положительных чисел. Вычислить значения этой функции для n
Функция F(n) определена для целых положительных чисел следующим образом: F(n)=1, при n=1 F(n)= сумма от i=2 до n F(n div i) , если...

Функция для простых чисел
Найти все трехзначные простые числа, определив функцию, позволяющую распознавать простые числа.

Функция digitsum для 5 чисел
Смотрите,вводится 5 чисел с 5 строчек и нужно сосчитать сумму цифр всех чисел Нужно сделать это через функцию Я додумал только как...

8
 Аватар для nullxdth
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
19.11.2013, 20:25
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun f (&rest xs)
  (let* ((xs  (mapcar #'abs xs))
         (min (reduce #'min xs))
         (max (reduce #'max xs)))
    `((:min . ,min)
      (:max . ,max)
      ,(if (and (integerp min)
                (integerp max))
           (cons :pair `((,min ,max)))
           (cons :average (/ (+ min max) 2))))))
 
(f   1 2 3 4.1 5) ; => ((:MIN . 1) (:MAX . 5) (:PAIR (1 5)))
(f 1.0 2 3   4 5) ; => ((:MIN . 1.0) (:MAX . 5) (:AVERAGE . 3.0))
3
61 / 61 / 12
Регистрация: 11.12.2009
Сообщений: 248
19.11.2013, 21:26  [ТС]
Огромнейшее спасибо! Выручили.

Может можете еще подсказать какой то учебник или справочник по Лиспу? А то нам выдали методички и в них много чего нет.
1
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
19.11.2013, 22:31
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun F (ls)
  (let* ((mi (reduce #'(lambda (x y) (if (< (abs x) (abs y)) x y)) ls))
         (ma (reduce #'(lambda (x y) (if (> (abs x) (abs y)) x y)) ls))
         (res (list mi ma)))
    (if (every #'integerp res)
        res
        (values (/ (apply #'+ res) 2) res))))
 
> (F '(1 2 3 4 5))
(1 5)
> (F '(0.2 0.68 -0.87 0.1 -0.25))
-0.385
(0.1 -0.87)
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38196 / 21129 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
19.11.2013, 23:05
Лучший ответ Сообщение было отмечено как решение

Решение

Лично я понял задачу так: найти максимум и минимум по модулю, а список формировать и среднее считать не модулей, а исходных чисел. Поэтому решения, приведенные выше, некорректны.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun task (lst)
  (let* ((la (mapcar '(lambda (x) (+ 0.0 (abs x))) lst))
         (ma  (apply 'max la))
         (pma (position ma la))
         (mi  (apply 'min la))
         (pmi (position mi la)))
     (if (and (fixedp (nth pmi lst)) (fixedp (nth pma lst)))
         (list (nth pmi lst)(nth pma lst))
         (/ (+ (nth pmi lst) (nth pma lst)) 2))))  
 
 
==> task
 
(task '(1 2 3 -1 -2 -6))
 
==> (1 -6)
 
(task '(1 2 3 -1 -2 -6.9))
 
==> -2.95
3
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
20.11.2013, 12:03
Цитата Сообщение от Catstail Посмотреть сообщение
а список формировать и среднее считать не модулей, а исходных чисел
Я тоже так понял.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38196 / 21129 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
20.11.2013, 17:29
Lambdik, к Вашему решению мое замечание не относится
1
 Аватар для nullxdth
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
20.11.2013, 19:55
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от avg93 Посмотреть сообщение
Может можете еще подсказать какой то учебник или справочник по Лиспу?
http://lisper.ru/pcl/

Добавлено через 2 часа 5 минут
Цитата Сообщение от Catstail Посмотреть сообщение
Лично я понял задачу так: найти максимум и минимум по модулю, а список формировать и среднее считать не модулей, а исходных чисел.
Пфф.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun f (&rest xs)
  (let* ((min (find (reduce #'min xs :key #'abs) xs :key #'abs))
         (max (find (reduce #'max xs :key #'abs) xs :key #'abs)))
    `((:abs-min . ,min)
      (:abs-max . ,max)
      ,(if (and (integerp min)
                (integerp max))
           (cons :pair `((,min ,max)))
           (cons :average (/ (+ min max) 2))))))
 
(f 3   -1 5 4 10) ; => ((:ABS-MIN . -1) (:ABS-MAX . 10) (:PAIR (-1 10)))
(f 1 -5.1 0 3  5) ; => ((:ABS-MIN . 0) (:ABS-MAX . -5.1) (:AVERAGE . -2.55))
4
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
21.11.2013, 10:23
Лучший ответ Сообщение было отмечено как решение

Решение

как вариант:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun if-intp-abs-min-max-list-average
    (&rest w &aux (v (mapcar #'abs w))
     (n (apply #'min v)) (x (apply #'max v)))
  (if (and (integerp n) (integerp x))
      (list n x)
      (/ (apply #'+ w) (length w))))
 
> (if-intp-abs-min-max-list-average  1 2 3 4 -5)
(1 5)
> (if-intp-abs-min-max-list-average  1 2 3 4 -5.5)
0.9
> (if-intp-abs-min-max-list-average  1 2 3 4 5.5)
3.1
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2013, 10:23
Помогаю со студенческими работами здесь

Функция для произведения чисел
Задание: Напишите функцию которая, принимая в качестве аргумента число, вектор или матрицу, возвращает произведение нечетных элементов...

функция xor для чисел
Всем доброго времени суток!Скажите пожалуйста, может где-нибудь есть наглядный пример работы функции xor для чисел? То есть, мне нужен...

Функция для умножения 3 чисел
Помогите пожалуйста написать функцию my_prod для умножения трех чисел.

Функция для поиска простых чисел
не могу сделать функции для поиска простых чисел, вот код функции int prost(int x) { if (x/2) return true; else ...

Функция для подсчета чисел в массиве
Помогите с вычислением количества одинаковых цифр в двухмерном массиве #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define N 4...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru