|
6 / 6 / 6
Регистрация: 09.12.2013
Сообщений: 104
|
||||||
Программа на Clisp30.10.2016, 11:14. Показов 8393. Ответов 26
Метки нет (Все метки)
Здравствуйте, подскажите пожалуйста как написать данный вариант программы. Преподаватель вместе с нами учится этому языку и не может ничем помочь, задания он берет с openedu. Пишем мы на clisp. Вот самое задание:
Кликните здесь для просмотра всего текста
Прочитать трехмерный массив из стандартного потока ввода. Массив может содержать элементы различных типов – целые, вещественные, комплексные числа, строки, символы, списки, другие массивы. Необходимо найти сумму целых чисел, не делящихся нацело на 5. Если целых чисел в массиве нет, результат – 0. Пример: Дан трехмерный массив #3A(((1.8 5 #\B "may") ("the" 2.25 1.3 4) (17 0 "force" 55)) (("be" #C(0 1) 5.02 99) ("with" 1.1 (#\Y #\N) 0.87) ("you!" #C(2.2 3.3) 42 4.2))) Прочитать его из стандартного потока ввода можно с помощью следующей инструкции: (defparameter arr (read)) Это массив размерности 2x3x4 (вспомните, как узнать размерность массива во время выполнения программы?). В нем содержатся различные элементы, в том числе следующие целые числа: 5 4 17 0 55 99 42 Среди этих чисел есть те, которые не делятся нацело на 5: 4 17 99 42 Их сумма равна 162, этот результат и нужно вывести в стандартный поток вывода. а вот что я начал писать:
В своём коде я пытался создать в переменную arr массив, потом считать его туда, ну и в конце просто вывести. На что мне интерпретатор пишет: "The function COMMON-LISP-USER::ARR is undefined." Я даже понять не могу. Спасибо всем заранее, что сюда заглянули. На вас последняя надежда.
0
|
||||||
| 30.10.2016, 11:14 | |
|
Ответы с готовыми решениями:
26
Функции в CLISP CLISP vs SBCL запуск clisp |
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 28.03.2021, 14:16 | ||
|
К циклам а-ля паскаль я добавил repeat, потому что он есть в учебниках Кушниренко. Правда, в качестве последовательностей я бы всё-таки взял списки, а не массивы, потому что знать в лиспе массивы и не знать списки - совсем уж дико. А для прохода списка нужен свой цикл, по номеру - нехорошо. Тогда уж и across для строк. Не по теме:
3
|
||
|
2 / 2 / 0
Регистрация: 27.03.2021
Сообщений: 5
|
||||||||||||||
| 28.03.2021, 19:44 | ||||||||||||||
|
Добрый вечер!
В итоге, на задание:
0
|
||||||||||||||
|
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
|
|||||||||||
| 28.03.2021, 21:22 | |||||||||||
0
|
|||||||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||
| 28.03.2021, 21:24 | |||
|
Ну. Например, у вас массив 2х3х4, и вас интересует, как получить эти размерности ― 2, 3, 4. Здесь есть два способа. Если нужны все сразу, то можно воспользоваться функцией array-dimensions, которая вернёт список из этих размерностей: (2 3 4). Если же требуется узнать одну размерность ― вдоль конкретной оси ― то можно воспользоваться функцией array-dimension, которая принимает массив и номер оси. Например, (array-dimension arr 0) в данном случае дало бы 2, а (array-dimension arr 1) дало бы 3. (Нумерация всего, связанного с массивами, в CL начинается с нуля.)
А что делаете вы? make-array создаёт массив указанной размерности. Вы вычисляете полную размерность массива arr, создаёте новый массив такой же размерности и вычисляете размерность этого массива вдоль оси с помощью array-dimension. Конечно, промежуточный массив не нужен. Если вам нужна размерность оси номер 0 массива arr, вы можете узнать её непосредственно как (array-dimension arr 0). Не знаю, конечно, что у вас за курс, и из каких соображений в качестве первого языка выбран CL. Но советую обязательно работать интерактивно, если вы вдруг так не делаете. Для обучения эта особенность лиспа ― интерактивная разработка ― очень кстати.
1
|
|||
|
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
|
||
| 29.03.2021, 01:55 | ||
|
0
|
||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 29.03.2021, 02:49 | |
|
Я думаю, Кушниренко не претендовал на лавры Кнута.
Это просто учебник для достаточно юных студентов. Довольно ограниченного охвата - основы императивного программирования. Так что он не заменяет собой SICP и другие хорошие книги. А практические задачки там очень неплохие рассматриваются. И, кроме того, написано человеком умным и квалифицированным.А Кнута я, честно говоря, не читал и не думаю, что когда-нибудь буду читать.
0
|
|
|
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
|
|
| 29.03.2021, 11:26 | |
|
helter, вам уже и не нужно, студентам же.
0
|
|
| 29.03.2021, 11:26 | |
|
Несложные задания на clisp Clisp работа с классами Простая рекурсия CLISP Работа со списками, clisp Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|