Четверг, 19 Сентября 2019, 17:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Возведение произведений в степень
Возведение произведений в степень
masb8ly-GCДата: Суббота, 26 Ноября 2011, 23:01 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Здравствуйте! Пишу программу для возведения произведений в степень. Функция для возведения отдельных чисел в степень уже написана, но я не могу реализовать возведение произведения в степень. Как это сделать? Надеюсь получить ответ. Заранее спасибо!

Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
фЕноменДата: Суббота, 26 Ноября 2011, 23:06 | Сообщение # 2
частый гость
Сейчас нет на сайте
(x*y)^z? Oo

Mugen For All - Русскоязычное сообщество пользователей движка M.U.G.E.N.
masb8ly-GCДата: Суббота, 26 Ноября 2011, 23:27 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Я имею ввиду как это реализовать? Как я понимаю необходимо разбить выражение на отдельные элементы, если элемент число - возвести его в степень, если символ - добавить приписку ^z. Далее необходимо будет восстановить выражение, распознать формулу и выполнить необходимые вычисления. Но если распознавание формулы немного понятно, то до этого момента все темный лес1

Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
SWFcreatorДата: Воскресенье, 27 Ноября 2011, 00:18 | Сообщение # 4
участник
Сейчас нет на сайте
Свою функцию без стандартных функций?

Добавлено (27.11.2011, 00:18)
---------------------------------------------
В паскале я нуб, но меня учили делать это так: exp(lg(произведение) * степень)

noTformaTДата: Воскресенье, 27 Ноября 2011, 00:25 | Сообщение # 5
Ukrainian independent game developer
Сейчас нет на сайте
Посмотри что такое "ПОЛИЗ", он же "ОБРАТНАЯ ПОЛЬСКАЯ НОТАЦИЯ" ))))
Если в двух словах, то это безскобочное представление формулы...


@noTformaT
masb8ly-GCДата: Воскресенье, 27 Ноября 2011, 02:05 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
SWFcreator, учили вас самой примитивной функции. Моя тоже изначально выглядела как Exp(y*Ln(Abs(x))).
На счет Обратной Польской Нотации сейчас посмотрю. Спасибо!)


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders


Сообщение отредактировал masb8ly-GC - Воскресенье, 27 Ноября 2011, 02:51
SWFcreatorДата: Воскресенье, 27 Ноября 2011, 02:29 | Сообщение # 7
участник
Сейчас нет на сайте
Quote
учили вас самой примитивной функции

наверно так и есть, недели 2 - 3 назад начали на парах Паскаль учить.
masb8ly-GCДата: Воскресенье, 27 Ноября 2011, 02:35 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Эх мне бы в моем 8 классе кто-нибудь на парах по рассказывал)

noTformaT, почитал про ПОЛИЗ разобрался как работает и написал программу для перевода из обычного выражения в польскую инверсионную запись, но возник вопрос как же теперь восстановить формулу обратно?


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders


Сообщение отредактировал masb8ly-GC - Воскресенье, 27 Ноября 2011, 02:49
TimKruzДата: Вторник, 29 Ноября 2011, 13:23 | Сообщение # 9
старожил
Сейчас нет на сайте
Что-то я всю тему прочитал, но ничего не понял. Что сложного в том, чтобы перемножить два числа и возвести результат в степень? eek Кажется, в Паскале есть стандартная функция степени... Тем более, ты говоришь, что распознование понимаешь (как я понял, делаешь калькулятор?). Просто интересно понять проблему; может, что-то подскажу.

noTformaTДата: Вторник, 29 Ноября 2011, 13:33 | Сообщение # 10
Ukrainian independent game developer
Сейчас нет на сайте
Quote (TimKruz)
Что-то я всю тему прочитал, но ничего не понял. Что сложного в том, чтобы перемножить два числа и возвести результат в степень?

как я понял автору дают строку выражения, типа 1+1. ему надо найти результат...
потом дают строку с выражением по серьезнее, типа (1+1)^12...
потом дают еще по серьезнее, типа cos(12 / pi) + sin(10 * pi / 20) * tg(pi)....
Тоесть, вне зависимости от введенного выражения (будь то оно простое, или сложное), программе автора надо парсить выражение и находить результат.... Самое простое решение - ПОЛИЗ smile Он используется в 99% калькуляторов...

Именно так я понял его вопрос.... Но, я могу ошибаться....

Quote (masb8ly-GC)
но возник вопрос как же теперь восстановить формулу обратно?

ммм, если у тебя есть строка с выражением, то почему бы не пользоваться ей?


@noTformaT
masb8ly-GCДата: Вторник, 29 Ноября 2011, 13:43 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Ну пока я делаю не калькулятор, а конкретный модуль для возведения в степень.
Немного не так как вы сказали noTformaT, но близко.
Принцип такой:
1. Вводится выражение
2. Переводится в польскую инверсионную запись
3. Возводится в степень
4. Восстанавливается выражение
5. Парсинг выражения
6. Выполнение нужных операций
7. Выведение результата.

Но 3 шаг скорее всего не будет нужен, так как я действительно понемногу переделываю это в калькулятор!

Quote (TimKruz)
Что-то я всю тему прочитал, но ничего не понял. Что сложного в том, чтобы перемножить два числа и возвести результат в степень? Кажется, в Паскале есть стандартная функция степени... Тем более, ты говоришь, что распознование понимаешь (как я понял, делаешь калькулятор?). Просто интересно понять проблему; может, что-то подскажу.

В паскале нет стандартной функции для возведения в степень, только в Object Pascal с использованием модуля math есть функция power.


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders


Сообщение отредактировал masb8ly-GC - Вторник, 29 Ноября 2011, 13:45
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Возведение произведений в степень
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг