![]() |
|
Модераторы: bsa |
![]()
|
|
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
Например необходимо перемножить 2 больших числа (больше чем long) заданы они аргументами программы, в виде строк (char *).
Придумал такой вариант Перевести строки в массив (short *) в каждой ячейке своё число. Взять результирующий массив int discharges[len1 + len2 + 1] длинной как сумма длин аргументов И умножить как столбиком, только в старший разряд сразу не переносить, а только при выводе результата
Подскажите может есть более красивые методы? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
По-моему, очень даже ничего. Только нужно придумать, как избавиться от '0' в начале
http://liveworkspace.org/code/253091e57c8f...117f6931eaaead3 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Почему в исходых массивах не вычитаешь '0'. а в результате добавляешь? Не логично.
Если в массивах хранятся символы '0'...'9', логичнее хранить начиная со старшего + возможный '-' в начале, и '\0' в конце, чтобы сразу можно было распечатать. Для убыстрения можно на входе иметь массив unsigned short, discharges будет unsigned long, но при этом придётся делать спецальную процедуру для распечатки результата. Альтернативный вариант вычислению столбиком - быстрое умножение |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
дал бы ссылочку -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Хоббит, вот вариант без '0' в начале и с учётом знака
http://liveworkspace.org/code/92c4acb81940...4492e0f7a883015 плюс немного соптимизировано - на 0 не умножается Это сообщение отредактировал(а) borisbn - 15.10.2011, 14:21 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
||||
|
||||
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
Всем спасибо большое. В принципе '0' я учел в начале, просто я упростил код в топике. Примеры сейчас смотрю.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |