Калькулятор - алгоритм?
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
Калькулятор - алгоритм?
Коллеги, где найти алгоритм для написания калькулятора, который умеет выполнять +,-, *, / для очень больших чисел, которые видимо придется представлять как строки и с ними оперировать?
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Re: Калькулятор - алгоритм?
Реализуйте свой собственный класс чисел произвольной точности и пользуйте любой калькулятор, например из книги Страуструпа.
Тупизна как Энтропия. Неумолимо растет.
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
Re: Калькулятор - алгоритм?
Boriskin wrote:Реализуйте свой собственный класс чисел произвольной точности и пользуйте любой калькулятор, например из книги Страуструпа.
Нужно реализовать операции над строками, в которых представлены большие числа, поэтому я думаю Страуструп не подходит.
Т.е., первое, что на ум приходит - это к примеру сложение реализовывать по алгоритму сложения чисел в столбец.
-
- Уже с Приветом
- Posts: 20297
- Joined: 01 Dec 2003 23:16
- Location: Russia->USA
Re: Калькулятор - алгоритм?
Win32nipuh wrote:Т.е., первое, что на ум приходит - это к примеру сложение реализовывать по алгоритму сложения чисел в столбец.
Мне кажется правильное решение, только конечно не по одной цыферке, а по слову (если конечно скорость имеет значение).
А вообще не только алгоритмы, но и библиотеки наверняка имеютя
уж на фортране точно
-
- Уже с Приветом
- Posts: 8881
- Joined: 17 Jun 2003 04:41
Если числа целые и на C++, стяните любую криптографическую библиотеку - Crypto++ например. Там есть классы для работы с длинными целыми.
Или вот это попробуйте - http://www.swox.com/gmp/ .
Самому писать - дело неблагодарное, особенно если скорость работы имеет хоть какое-то значения.
Или вот это попробуйте - http://www.swox.com/gmp/ .
Самому писать - дело неблагодарное, особенно если скорость работы имеет хоть какое-то значения.
-
- Уже с Приветом
- Posts: 2278
- Joined: 02 Jan 2001 10:01
- Location: MSK; NJ; MA; UAE, Chicago
Вот что у меня получилось за 5 минут с Экселем
Сложение. Жирным выделен конечный результат.
Дальше можно улучшать как захочется
Сложение. Жирным выделен конечный результат.
Дальше можно улучшать как захочется
You do not have the required permissions to view the files attached to this post.
Гриша
------------
Why would anybody come here if they had a pony? Who leaves a country packed with ponies to come to a non-pony country? It doesn't make sense.. am I wrong?
------------
Why would anybody come here if they had a pony? Who leaves a country packed with ponies to come to a non-pony country? It doesn't make sense.. am I wrong?
-
- Уже с Приветом
- Posts: 427
- Joined: 08 May 2001 09:01
-
- Уже с Приветом
- Posts: 2278
- Joined: 02 Jan 2001 10:01
- Location: MSK; NJ; MA; UAE, Chicago
-
- Уже с Приветом
- Posts: 8881
- Joined: 17 Jun 2003 04:41
IPoloz wrote:Подойдет?
http://www.informatik.tu-darmstadt.de/TI/LiDIA/
Она небесплатная. "LiDIA, including the point counting package, is free for non-commercial pruposes. A license fee is not required for non-commercial applications."
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Re: Калькулятор - алгоритм?
Win32nipuh wrote:Boriskin wrote:Реализуйте свой собственный класс чисел произвольной точности и пользуйте любой калькулятор, например из книги Страуструпа.
Нужно реализовать операции над строками, в которых представлены большие числа
Либо я не врубился в вашу задачу, либо...
реализуете нечто вроде class Number, в котором опять таки реализуете все возможные операции как то +, -, *, /. А внутри как хотите - так и храните - хоть в строках, хоть в массивах. И - вместо встроенных типов подсовываете в страуструповский калькулятор...
Попутно неплохой трениг по плюсам.
Или я чего то пропустил?
Тупизна как Энтропия. Неумолимо растет.
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
Re: Калькулятор - алгоритм?
Boriskin wrote:Win32nipuh wrote:Boriskin wrote:Реализуйте свой собственный класс чисел произвольной точности и пользуйте любой калькулятор, например из книги Страуструпа.
Нужно реализовать операции над строками, в которых представлены большие числа
Либо я не врубился в вашу задачу, либо...
реализуете нечто вроде class Number, в котором опять таки реализуете все возможные операции как то +, -, *, /. А внутри как хотите - так и храните - хоть в строках, хоть в массивах. И - вместо встроенных типов подсовываете в страуструповский калькулятор...
Попутно неплохой трениг по плюсам.
Или я чего то пропустил?
Все ок, вопрос в алгоритмах реализации опреаций, хранение действительно не проблема, но скорее всего в строках. Да, пирдется видимо реализовывать пересчет в системы исчисления с большим основанием.
Идея Гриши хорошая, как частный случай.
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
A. Fig Lee wrote:Еще Керниган и Ритчие в своей книжке описали классный и простой алгоритм с полиш нотацией. Без всяких деревьев и прочих комплексностей.
Наверное я неправильно объяснил суть:
пример: юзер вводит две строки длиной 1000 символов (цифр), вторая длиной 500 символов (цифр) и между ними знак * (а возможны еще +, -, /)
И тот же юзер хочет получить на выходе строку-результат умножения вот таких чисел.
Уважаемый A. Fig Lee, чем тут может помочь Керниган или Ричи? , Увы...
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Win32nipuh wrote:A. Fig Lee wrote:Еще Керниган и Ритчие в своей книжке описали классный и простой алгоритм с полиш нотацией. Без всяких деревьев и прочих комплексностей.
Наверное я неправильно объяснил суть:
пример: юзер вводит две строки длиной 1000 символов (цифр), вторая длиной 500 символов (цифр) и между ними знак * (а возможны еще +, -, /)
И тот же юзер хочет получить на выходе строку-результат умножения вот таких чисел.
Уважаемый A. Fig Lee, чем тут может помочь Керниган или Ричи? , Увы...
По мотивам Вашего предыдущего выступления с деревьями...
Строки надо пушать на стек ясен пень.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Win32nipuh wrote:A. Fig Lee wrote:По мотивам Вашего предыдущего выступления с деревьями...
Строки надо пушать на стек ясен пень.
Да, извините, это разные задачи...
Кстати, по мотивам рпедыдущего выступления по поводу деревьев: реализовал ДНФ, красотища , понравилось "лазить по деревьям".
а чем дерево лучше?
Скорость? Меньше памяти ест? Проще? Мне кажется единственно - оно ближе к пониманию.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 27652
- Joined: 15 Jul 2002 17:05
- Location: MD
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
-
- Уже с Приветом
- Posts: 279
- Joined: 11 Jul 2002 22:21
- Location: Palo Alto, CA
Возможности практически безграничны - можно делать практисеки все что угодно. Польская нотация позволяет только вычислять.A. Fig Lee wrote:Win32nipuh wrote:Кстати, по мотивам рпедыдущего выступления по поводу деревьев: реализовал ДНФ, красотища , понравилось "лазить по деревьям".
а чем дерево лучше?
Скорость? Меньше памяти ест? Проще? Мне кажется единственно - оно ближе к пониманию.
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Hamster wrote:Или пойти на топкодер, Invitational 2001 Semifinals C+D, hardest
Правда, небольшая проблема - только одна успешная submission, и та на Яве. У меня было рабочее решение, но оно где-то потерялось. Придется искать в practice room'е.
Я когда-то, года 4 назад, делал как тестовую задачу - сложение и умножение неограниченно больших целых чисел. Скорость там не особенно играла роль, поэтому просто представил числа как строки (то есть почти неограниченно получилось ), и спокойно так их в цикле обрабатывал, зпдпнными кусками.
Работы - на несколько часов.
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
uuid wrote:Возможности практически безграничны - можно делать практисеки все что угодно. Польская нотация позволяет только вычислять.A. Fig Lee wrote:Win32nipuh wrote:Кстати, по мотивам рпедыдущего выступления по поводу деревьев: реализовал ДНФ, красотища , понравилось "лазить по деревьям".
а чем дерево лучше?
Скорость? Меньше памяти ест? Проще? Мне кажется единственно - оно ближе к пониманию.
Вот, именно так.
Я когда делал эту задачу, искал какие-нибудь готовые лексические анализаторы, так большинство из них сводится к evaluation по ходу пьесы, т.е. сразу же выполняются указанные операции.
А в моей предыдущей задаче нужно было разобрать строку, заданную юзером для поиска в базе в некоем своем "человеческом" синтаксисе, и преобразовать ее к синтаксису полнотекстового поиска SQL Server.
И в этом случае нужно было дерево разбора, по которому нужно было пройти, построить ДНФ, по пути , по поддеревьям применить правило Де Моргана, и при втором проходе построить XML.
Над строкой так не поиздеваешься
Потому uuid - спасибо за отличную идею