|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
|||||||||||
Длинная арифметика13.05.2012, 13:32. Показов 3683. Ответов 14
Метки нет (Все метки)
Здраствуйте, пишу модуль длинной математики. В принципе, работоспособность у него положительная. Но в силу моей неопытности меня мучают вопросы оптимизации. М.б. кто то сможет (или уже смог) реализовать более красивый код, чем мой.Собственно сначала ввод/вывод.
0
|
|||||||||||
| 13.05.2012, 13:32 | |
|
Ответы с готовыми решениями:
14
Длинная арифметика Длинная арифметика Длинная арифметика |
|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
||
| 13.05.2012, 13:41 [ТС] | ||
|
0
|
||
|
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
|
|
| 13.05.2012, 13:42 | |
|
1
|
|
|
Higher
|
||
| 13.05.2012, 13:45 | ||
|
0
|
||
|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
||||||
| 13.05.2012, 13:59 [ТС] | ||||||
|
Так, такой вопрос, смотрел насколько ресурсов, 1 из них мне очень даже понравился.
0
|
||||||
|
Higher
|
||||||
| 13.05.2012, 14:04 | ||||||
|
Реализаций много, одна из лучших для с++ - библиотека gmp, в которой можно использовать код на чистом C, либо обертку вокруг него в виде класса.
А в класс стоит оборачивать, чтобы можно было писать подобные конструкции.
Вот еще один неплохой ресурс с длинной арифметикой на с++ - http://e-maxx.ru/algo/big_integer
2
|
||||||
|
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
|
||
| 13.05.2012, 14:19 | ||
|
0
|
||
|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
||
| 13.05.2012, 14:34 [ТС] | ||
|
Может оно тогда к лучшему и не заморачиваться по поводу написания модуля арифметики, если уж gmp есть? Очень удобная библиотека для пользования. В info все от и до описано.
Как же я так пропустил ее мимо ![]() Добавлено через 1 минуту Я тогда на время от этой темы уйду, вернусь недельки через 2-3 к ней. Все таки самому изобрести велосипед по новой тоже бывает полезно. А там и собственно класс выложу, для работы с длинными, что бы пользователя порадовать, особенно тех, кому использовать сторонние либы нельзя. Всем спасибо...
1
|
||
|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
|
| 12.06.2012, 16:23 [ТС] | |
|
И так, возвращаясь к теме длинной арифметики, коей я интересовался некоторое время назад.
GMP - библиотека действительно очень удобная, хотя и много было вопросов по поводу того как ее подключить, все ответы уже есть, тем более они на русском... Что касаемо сообщений на тему, мне нельзя использовать сторонние либы или нужно свой класс реализовать или я не силен, а сторонние либы какие то громоздкие больно (именно с такой проблемой я по началу сам столкнулся): вот здесь http://cppalgo.blogspot.com/2010/05/blog-post.html все по полочкам разложено о написании собственного класса с пояснениями, как и что. Автор использует struct, но кто вам мешает использовать class и вынести это в заголовочный файл. Там даже код есть, немного переделываем, если есть желание, и все готово. Свою реализацию класса выложу после экзамена 18 июня с пояснениями. Еще раз спасибо тем, кто помог мне, и показал полезные ссылки...
1
|
|
|
6 / 6 / 2
Регистрация: 02.06.2009
Сообщений: 99
|
|
| 16.06.2012, 21:49 [ТС] | |
|
Класс длинно-численной арифметики выставляю чуть раньше обещанного. Прошу сильно не ругать, если где то увидели корявую реализацию. Советы по оптимизации принимаются (как в части математической, так и в части реализации самого кода) - буду очень признателен. Все советы по исправлению и доработке буду обязательно использовать, что однозначно улучшит данный вариант.
Я описал только названия - что для чего. В принципе, очень похожий код вы найдете по ссылке из предыдущего сообщения + полное описание математики произходящего.
0
|
|
|
|
|
| 17.06.2012, 00:10 | |
|
А почему собственно вектор? Разве дек не оптимальнее?
Насчет gmp - там нет логарифмов,экспонент итп поэтому придется реализовывать самому через ряды (с использованием gmp конечно) - думаю это можно было бы написать + обвертку класса по то му как при работе через ф-ции код получается не такой читаемый
0
|
|
|
Higher
|
||
| 17.06.2012, 09:01 | ||
|
С одной стороны, будут переезды из одного куска памяти в другой, с другой стороны - во всем остальном вектор быстрее, так как удалять элементы нужно только с конца. В коде мне не нравится ограничение на максимальную длину чисел. Если использовать вектор, то таких ограничений не будет, можно и без вектора неограниченную длину сделать. И еще нужно обернуть класс в отдельное пространство имен, и уже в этом пространстве написать все необходимые using'и. А то сейчас получается такая ситуация, что при включении вашего хедера автоматически раскрывается пространство имен std, а это не есть гуд.
0
|
||
|
|
|||
| 17.06.2012, 16:09 | |||
0
|
|||
| 17.06.2012, 16:09 | |
|
Помогаю со студенческими работами здесь
15
Длинная арифметика Длинная арифметика Длинная арифметика длинная арифметика Длинная арифметика Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|