Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70

Арифметическое дерево

08.06.2016, 18:12. Показов 1935. Ответов 3
Метки нет (Все метки)

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

Есть код на LISP:
Lisp
1
2
3
4
5
;(calc-expr '(+ (/ 4 2) (- (* 3 4) 7 8 9)))
 
(defun calc-expr (tree)
  (cond ((atom tree) tree)
        ((member (car tree) '(+ - * /)) (apply (car tree) (mapcar 'calc-expr (cdr tree))))))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2016, 18:12
Ответы с готовыми решениями:

Бинарное дерево и арифметическое выражение
Всем привет!!!!Я хочу решить такую задачу, пользователь вводит арифметическое выражение , а я это выражение должен преобразовать в дерево,...

Правильное арифметическое выражение записать в двоичное дерево
1). Погрузить с клавиатуры правильное арифметическое выражение в двоичное дерево. 2). Распечатать 3). Погрузить из двоичного дерева в...

Бинарное дерево. Найти среднее арифметическое указанного уровня
Доброго времени суток. Необходимо найти среднее арифметическое указанного уровня ( к примеру 2) Но никак не могу понять как это...

3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
08.06.2016, 18:49
Код на Лиспе здесь мало поможет. В Хаскелле нужно использовать алгебраический тип данных (АТД)

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
data Expr = Const Integer | Add Expr Expr | Mult Expr Expr | Sub Expr Expr deriving (Eq,Show)
                  
eval :: Expr -> Integer
eval (Const x) = x
eval (Add e1 e2) = (eval e1) + (eval e2)
eval (Mult e1 e2) = (eval e1) * (eval e2)
eval (Sub e1 e2)  = (eval e1) - (eval e2)
 
Main> eval $  Add (Const 5) (Const 7)
12
Main> eval $  Add (Const 5) (Const 7)
12
Main> eval $  Add (Const 5) (Mult (Const 3) (Const 7))
26
Main> eval $  Add (Const 5) (Mult (Const 3) (Const 7))
26
Main> eval $  Add (Const 5) (Sub (Const 3) (Const 7))
1
1
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
10.06.2016, 02:07  [ТС]
А зачем нужна операция Const?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
10.06.2016, 09:18
Цитата Сообщение от SuperAgent007 Посмотреть сообщение
А зачем нужна операция Const?
- это конструктор типа данных. Почитайте вот это
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2016, 09:18
Помогаю со студенческими работами здесь

Распечатать, посчитать среднее арифметическое, преобразовать в дерево поиска [Бинарные деревья]
Дано идеально сбалансированное дерево. Не выводиться дерево:(... Не понимаю как пройтись по элементам. Из за этого не понимаю как...

Сформировать дерево Т и определить число вхождений параметра Е в дерево Т - Блок схема
Сформировать дерево Т и определить число вхождений параметра Е в дерево Т. Вот решение задачи, народ, помогите, кто может, составить...

Бинарное дерево: как происходит добавления элемента в дерево с двумя параметрами
Здравствуйте! Прошу помощи у опытных программистов...)))) Есть класс дерево: class class1 { public class Tree ...

Методы индексирования на основе функции расстояния. Универсальное деление гиперплоскостями. Дерево биссектрис и МВ-дерево
Доброго времени суток. В поисках информации для курсовика жизнь занесла сюда :) Поделитесь информацией, литературой :) Тема:...

Как залезть в расчетное дерево (дерево зависимостей формул)?
Есть собственная формула, параметры которой заставляют для ее расчетов лезть на другие листы и в другие ячейки (причем какие конкретно...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru