Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Операции с большими числами в C.

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Заголовок сообщения: Ответить с цитатой

По другому не сделаешь, у инта же диапазон маленький. И что за гимор с даблом? По-моему, отличный типчик Smile
Вернуться к началу
HeXa
Гость





СообщениеДобавлено: Сб Дек 27 2003 14:54    Заголовок сообщения: Ответить с цитатой

Takhi писал(а):
По другому не сделаешь, у инта же диапазон маленький. И что за гимор с даблом? По-моему, отличный типчик Smile

не мог бы привести пример этой функции?
я не представляю как отбрасывать значения...
Вернуться к началу
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-ю степень. Если нужны подробности - пиши.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...