Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
HeXa Гость
|
Добавлено: Сб Дек 27 2003 13:07 Заголовок сообщения: Операции с большими числами в C. |
|
|
Возник вопрос по написании функции на C. В функцию передается 8 или 9-ти значный ключ. Далее этот ключ возводится в квадрат => получается ключ 16-ти или 17-ти значный.
Требуется функция которая из этого 16 или 17-ти значного ключа делает 4-х значный следующим образом: поочередно отбрасываются слева и справа по одной цифре. До тех пор, пока в ключе не отстанется 4 цифры. этот 4-х значный ключ и возвращается. Важно: отбрасывание чисел начинается с самой левой цифры.
Можно другой способ... главное получить 4 центральных цифры.
Важно: 16 и 17-ти значное число не влезает в int && unsigned int && unsigned long int почему то...
Подскажите плиз что сделать....
компилятор - gcc |
|
Вернуться к началу |
|
|
Tahir Гость
|
Добавлено: Сб Дек 27 2003 14:10 Заголовок сообщения: А так? |
|
|
Double не подходит, что ли? Нафига обязательно int??? |
|
Вернуться к началу |
|
|
HeXa Гость
|
Добавлено: Сб Дек 27 2003 14:25 Заголовок сообщения: Re: А так? |
|
|
Tahir писал(а): | Double не подходит, что ли? Нафига обязательно int??? |
подходит... но с ним гимора много |
|
Вернуться к началу |
|
|
Takhi Гость
|
Добавлено: Сб Дек 27 2003 14:51 Заголовок сообщения: |
|
|
По другому не сделаешь, у инта же диапазон маленький. И что за гимор с даблом? По-моему, отличный типчик |
|
Вернуться к началу |
|
|
HeXa Гость
|
Добавлено: Сб Дек 27 2003 14:54 Заголовок сообщения: |
|
|
Takhi писал(а): | По другому не сделаешь, у инта же диапазон маленький. И что за гимор с даблом? По-моему, отличный типчик |
не мог бы привести пример этой функции?
я не представляю как отбрасывать значения... |
|
Вернуться к началу |
|
|
Tahir Гость
|
Добавлено: Сб Дек 27 2003 14:58 Заголовок сообщения: |
|
|
Как с числами это сделать - могу объяснить, но сложно. Проще сделать по-другому: перевести число в string (char), затем выкинуть все ненужные цифры (легко), оставшееся обратно перевести в число. Все простое гениально. |
|
Вернуться к началу |
|
|
HeXa Гость
|
Добавлено: Сб Дек 27 2003 15:04 Заголовок сообщения: |
|
|
Tahir писал(а): | Как с числами это сделать - могу объяснить, но сложно. Проще сделать по-другому: перевести число в string (char), затем выкинуть все ненужные цифры (легко), оставшееся обратно перевести в число. Все простое гениально. |
я думал над этим...
но как это написать???
проблема в том, что это лишь небольшая часть функции...
основлая задача- хеширование строк...
на n-ном этапе мы получаем 9-ти значное число... далее его в квадрат возводим...
далее отбрасываем от этого квадрата(16 или 17 значное число) до тех пор, пока не останется 4 цифры... это и возвращается... |
|
Вернуться к началу |
|
|
Tahir Гость
|
Добавлено: Сб Дек 27 2003 15:09 Заголовок сообщения: |
|
|
Я проблему не понимаю. Трудно со char-массивом поработать? Это же в одну срочку написать можно...
Кстати, ты не в курсе, как написать:
1. плоскую кнопку, не вдавливающуюся при клике
2. проверку связи с интернетом, учитывая прокси? |
|
Вернуться к началу |
|
|
HeXa Гость
|
Добавлено: Сб Дек 27 2003 15:18 Заголовок сообщения: |
|
|
Tahir писал(а): | Я проблему не понимаю. Трудно со char-массивом поработать? Это же в одну срочку написать можно...
Кстати, ты не в курсе, как написать:
1. плоскую кнопку, не вдавливающуюся при клике
2. проверку связи с интернетом, учитывая прокси? |
нет. я не знаю как это написать.
я не на вижуале пишу...
а как работать с даблом... да и с даблом в строке я не знаю....
как его в строку перевести? |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Сб Дек 27 2003 16:32 Заголовок сообщения: Попробуй длинную арифметику |
|
|
Ее можно найти, например, на algolist.manual.ru
ЗЫ: Хотя возни с ней не меньше. Действительно, проще использовать, символьный метод, описанный выше. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Пн Дек 29 2003 10:12 Заголовок сообщения: |
|
|
Задача не сложная. Факториал ста, например, со всеми значащими цифрами - стандартная задача на первом курсе любого технического вуза, по сложнее будет. Если программируешь на gcc то можешь использовать библиотеку gmp для работы с числами произвольной точности |
|
Вернуться к началу |
|
|
Demiurg83
Зарегистрирован: 16.01.2004 Сообщения: 6 Откуда: Липецк
|
Добавлено: Пт Янв 16 2004 04:31 Заголовок сообщения: |
|
|
Тип double НИЧЕМ не лучше _int64, можешь мне поверить: те же 64 бита, только часть их занимает порядок, а мантисса ютится в остатке памяти. Переполнения не будет - это да, зато отбрасывание "незначащих" разрядов обеспечено. Грубо говоря, "округление" 11111 до 11100. Если нужна целочисленная арифметика с действительно большими числами числами - либо используй стандартные библиотеки (см. выше), либо пиши свой совственный класс. Работа с большими числами как правило основана на представлении их, скажем, в 1000 - ричной системе счисления. Я с этим работал немного, возводил 255 в 500-ю степень. Если нужны подробности - пиши. |
|
Вернуться к началу |
|
|
|