Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
1

Оператор and не работает?

31.01.2014, 12:26. Показов 938. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Предикат (> x y) истинен, если x больше y. Опишите с помощью предиката > и условного предложения функцию, которая возвращает из трех числовых аргументов значение среднего по велечине числа:

Lisp
1
(среднее 4 7 6)
Lisp
1
==> 6
пишу

Lisp
1
2
3
4
(defun srav (x y z) 
(cond (and (> x y) (> x z) (> y z) z) 
(and (> x y) (> x z) (> z y) z) 
(and (> y z) (> y x) (> x z) x)))
Lisp
1
==> SRAV
Lisp
1
(srav 4 5 6)
Lisp
1
Error in COND [or a callee]: The variable AND is unbound.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2014, 12:26
Ответы с готовыми решениями:

Не работает оператор IF
при запуске окно командной строки быстро закрывается, а должно остаться открытым. FOR /f...

Не работает оператор if
Не работает оператор if при проверке параметра функции main; Ввод в cmd: "C:\...\Debug>Lab_7.exe...

Не работает оператор if
//--------------------------------------------------------------------------- #include <vcl.h>...

Не работает оператор Like
В Access 2016 есть условная база данных, в которой по условию, мне надо сделать запрос через фильтр...

4
1050 / 944 / 107
Регистрация: 04.11.2012
Сообщений: 974
Записей в блоге: 3
31.01.2014, 12:49 2
Лучший ответ Сообщение было отмечено Mashka_mulashka как решение

Решение

Шпарим лабораторную.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun average-num (x y z)
  (cond
    ((> x y) (cond ((> y z) y)
                   (t z)))
    ((> y x) (cond ((> z y) y)
                   (t z)))
    ((> z x) (cond ((> y z) z)
                   (t x)))))
 
> (average-num 7 6 4)
6
> (average-num 4 7 6)
6
> (average-num 4 6 7)
6
2
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
31.01.2014, 12:57  [ТС] 3
Цитата Сообщение от Lambdik Посмотреть сообщение
Шпарим лабораторную.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun average-num (x y z)
  (cond
    ((> x y) (cond ((> y z) y)
                   (t z)))
    ((> y x) (cond ((> z y) y)
                   (t z)))
    ((> z x) (cond ((> y z) z)
                   (t x)))))
 
> (average-num 7 6 4)
6
> (average-num 4 7 6)
6
> (average-num 4 6 7)
6
а почему мой вариант с AND Не работает?
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,643
Записей в блоге: 13
31.01.2014, 14:18 4
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
а почему мой вариант с AND Не работает?
- по двум причинам:

1) проблемы со скобками. Формально-верный вариант:
Lisp
1
2
3
4
(defun srav (x y z) 
   (cond ((and (> x y) (> x z) (> y z)) z) 
         ((and (> x y) (> x z) (> z y)) z) 
         ((and (> y z) (> y x) (> x z)) x)))
Найдите отличия от своего...

2) алгоритмически Ваш вариант неверен. Три числа можно расположить шестью способами. Соответственно, должно быть не три, а шесть ветвей (или три ветви по две проверки, как у Lambdik-a.
3
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
01.02.2014, 03:39 5
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(define (max x y) (if (> x y) x y))
(define (min x y) (if (< x y) x y))
 
(define (average x y z)
  (max (max (min x y)
            (min x z))
       (max (min y x)
            (min y z))))
 
(define (also-average x y z)
  (define (f a b c) (max (min a b) (min a c)))
  (max (f x y z) (f y x z)))
 
(display "average\n")
(average 1 2 3)
(average 2 3 1)
(average 3 1 2)
(average 1 3 2)
(average 3 2 1)
(average 2 1 3)
(display "also-average\n")
(also-average 1 2 3)
(also-average 2 3 1)
(also-average 3 1 2)
(also-average 1 3 2)
(also-average 3 2 1)
(also-average 2 1 3)
3
01.02.2014, 03:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2014, 03:39
Помогаю со студенческими работами здесь

Не работает оператор if else
//--------------------------------------------------------------------------- #pragma hdrstop ...

Не работает оператор Like
Есть таблица клиентов, нужно отобрать строки в таблице по ФИО клиента. Хочется сделать такую...

Не работает оператор if else
Всем привет :) Не могу понять , почему не работает оператор if else . Суть программы в том , что...

Не работает оператор IF
Всем привет. Занимаюсь постройкой привода для экваториальной монтировки телескопа, привод состоит...


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

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