Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 21.11.2013
Сообщений: 50

Лисп. Как переделать код, чтобы использовались макросы (defmacro) ?

21.04.2016, 22:32. Показов 1262. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию (предикат), что определяет, является ли ее аргументы взаимно простыми числами. Взаимно простыми называются числа, наибольший общий делитель которых равен единице.

Вот код есть:
Lisp
1
2
3
4
5
(defun prosti(x1 x2)    
 (if (or (= x1 0) (= x2 0)) 
    (return-from prosti 'нет)
    ( loop for i from 2 to x1 do            
        (if (and (= (mod x1 i) 0) (= (mod x2 i) 0)) (return-from prosti 'нет)))) 'да)

Как переделать код, чтобы использовались макросы (defmacro)?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2016, 22:32
Ответы с готовыми решениями:

Переделать код, чтобы в нем использовались функции
Помогите переделать код, чтобы в нем использовались функции.class Program { static void Main(string args) { ...

Переделать код так, чтобы использовались диапазоны значений с помощью указателей
Мне уже стыдно сюда писать ей богу :wall: . Но есть задача переделать Код№1 так чтобы использовались диапазоны значений с помощью...

Переделать программу, чтобы использовались динамические массивы
Есть программа, в которой данные хранятся, в виде записи. Нужно переделать, чтобы использовались динамические массивы. Без понятий, как...

7
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
21.04.2016, 22:51
scheme
Lisp
1
2
3
4
5
6
7
8
9
10
11
(define-syntax grand-div
  (syntax-rules ()
    ((_ a b)
     (eval #'(if (zero? b)
                 a
                 (grand-div b (remainder a b)))))
    ((_ a b ...)
     (eval #'(grand-div a (grand-div b ...))))))
 
(grand-div 18 48)
;6
1
0 / 0 / 1
Регистрация: 21.11.2013
Сообщений: 50
21.04.2016, 23:04  [ТС]
А можете пожалуйста рассказать как работает этот код и что значит троеточие?
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
21.04.2016, 23:42
Это только часть кода, мой косяк.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(define-syntax -gcd
  (syntax-rules ()
    ((_) -1)
    ((_ a) a)
    ((_ a b) (eval #'(if (zero? b)
                         a
                         (-gcd b (remainder a b)))))
    ((_ a b ...) (eval #'(-gcd a (-gcd b ...))))))
 
 
(define-syntax -co-prime?
  (syntax-rules ()
    ((_ a ...)
     (eval #'(= 1 (-gcd a ...))))))
 
(-co-prime? 48 25)
;#t
Цитата Сообщение от Бод Посмотреть сообщение
А можете пожалуйста рассказать как работает этот код
так же как и примитивная реализация функции gcd.
Цитата Сообщение от Бод Посмотреть сообщение
что значит троеточие?
Остальные аргументы. Вызывать можно для гипотетически неограниченного количества чисел.

Добавлено через 5 минут
Бод, этот код преподаватель дал? Он какой-то сишно-паскалевский.
1
0 / 0 / 1
Регистрация: 21.11.2013
Сообщений: 50
21.04.2016, 23:51  [ТС]
Нет, пробовал сам что-то слепить, а потом оказалось что еще нужны макросы.

На троеточие ругается и код из за этого не работает, можно что-то иначе вместо этого прописать?

Добавлено через 49 секунд
И можете пожалуйста помочь написать полный код?
0
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
21.04.2016, 23:59
это полный код, он написан на диалекте языка lisp — sheme
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(define-syntax -gcd
  (syntax-rules ()
    ((_) -1)
    ((_ a) a)
    ((_ a b) (eval #'(if (zero? b)
                         a
                         (-gcd b (remainder a b)))))
    ((_ a b ...) (eval #'(-gcd a (-gcd b ...))))))
 
 
(define-syntax -co-prime?
  (syntax-rules ()
    ((_ a b)
     (eval #'(= 1 (-gcd a b))))))
2
0 / 0 / 1
Регистрация: 21.11.2013
Сообщений: 50
22.04.2016, 00:03  [ТС]
Спасибо!
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
22.04.2016, 10:22
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Цитата Сообщение от Бод Посмотреть сообщение
Нет, пробовал сам что-то слепить, а потом оказалось что еще нужны макросы.
Не нужны тут макросы, можешь прямо так преподавателю сказать.
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2016, 10:22
Помогаю со студенческими работами здесь

Массив. Переделать программу так, чтобы в ней использовались процедуры.
Доброго времени суток! Помогите пожалуйста переделать программу так, чтобы в ней использовались процедуры Заранее спасибо. Вот...

Исправить код,чтобы использовались и указатели.(С++)
Решить эту задачу через указатели #include<stdio.h> #include<time.h> #include<stdlib.h> #include<iostream> #define S 30 int...

Как сделать чтобы 2 видеокарты использовались по максимуму?
Подскажите пожалуйста,у меня ноутбук с 2-мя видеокартами Mobile Intel(R) HD Graphics и ATI Radeon 4850hd,можно ли сделать так чтобы...

Как переделать код, чтобы вывод был в консоль?
Как переделать этот код , что бы вывод был в консоль? uses crt; var f,g: text; s: string; i: byte; begin ...

Как переделать код, чтобы изменить интерфейс до неузнаваемости?
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <fstream> #include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru