Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сравнивание больших чисел, как сравнить два больших (string) числа  
V
    Опции темы
valerchi
Дата 21.11.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string? 
PM MAIL   Вверх
Wildklas
Дата 21.11.2010, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 19.10.2010

Репутация: нет
Всего: нет



Сначала нужно подсчитать кол-во символов в строчке с помощью ф-и Length(Str), тоесть 
Код

S:=Length(str);

а потом уже сравнивать.

PM MAIL WWW ICQ Skype   Вверх
valerchi
Дата 21.11.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Не хочется изобретать велосипед.  Может есть готовая функция?
PM MAIL   Вверх
THandle
Дата 21.11.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Код

function Compare(const AS1, AS2: String): Integer;
var
  Len1, Len2: Integer;
begin
  Len1 := Length(AS1);
  Len2 := Length(AS2);
  if Len1 <> Len2 then
    if Len1 > Len2 then
      Result := 1
    else
      Result := -1
  else
    Result := CompareStr(AS1, AS2);
end;


Что нибудь типа этого думаю.
Положительное значение результата - 1 число больше, отрицательное - меньше. Если равны то 0.
PM   Вверх
Keeper89
Дата 21.11.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Цитата(valerchi @  21.11.2010,  16:43 Найти цитируемый пост)
Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string?  

Что имеется ввиду?


--------------------
PM MAIL WWW   Вверх
valerchi
Дата 22.11.2010, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



THandle, Спасибо, выручил.
PM MAIL   Вверх
northener
Дата 22.11.2010, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(valerchi @  21.11.2010,  16:43 Найти цитируемый пост)
Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string? 


Цитата(valerchi @  22.11.2010,  00:42 Найти цитируемый пост)
THandle, Спасибо, выручил. 


А заодно и "кинул подлянку". smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
valerchi
Дата 22.11.2010, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Цитата(northener @ 22.11.2010,  04:01)
Цитата(valerchi @  21.11.2010,  16:43 Найти цитируемый пост)
Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string? 


Цитата(valerchi @  22.11.2010,  00:42 Найти цитируемый пост)
THandle, Спасибо, выручил. 


А заодно и "кинул подлянку". smile

Какую подлянку?
PM MAIL   Вверх
valerchi
Дата 22.11.2010, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Keeper89, 
Цитата(Keeper89 @  21.11.2010,  22:22 Найти цитируемый пост)
Цитата(valerchi @  21.11.2010,  16:43 Найти цитируемый пост)
Мужики, помогите, может кто знает, есть ли такая функция сравнивания (< > =) больших чисел с типом string?  


Что имеется ввиду?

Имеется ввиду, что числа в длинной арифметике записываются как строка (тип string)? и я спросил, есть ли такая функция, которая может сравнить и определить, какое из двух сравниваемых чисел, записанных в строку, больше, а какое меньше, или может они равны...
PM MAIL   Вверх
ama_kid
Дата 22.11.2010, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



Цитата(valerchi @  22.11.2010,  10:45 Найти цитируемый пост)
Какую подлянку?
Ну подлянку - не подлянку, для тривиальных случаев проканает, просто внимательно надо пользоваться, к примеру, избавляться от ведущих и хвостовых нулей:
Код
Compare('0123456789','123456789');
Compare('0.1','0.10');
Но не от всяких:
Код
Compare('0.12345678','.123456789')
Да и не только от нулей:
Код
Compare('123456789.0','123456789');
Но самая главная - проблема со знаками, их тоже надо учитывать:
Код
Compare('-123','123');


И вообще, THandle указал направление, просто его развить надо, дополнить разными граничными условиями. Люди ведь не зря пишут целые библиотеки, посвященные работе с большими числами. Кстати, если погуглить - можно найти какие-нибудь исходники, посвященные этой теме.


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
XperT
Дата 22.11.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: нет
Всего: 4



THandle, 
Первое число может быть "001", а второе "99" и ваша функция даст не верный результат
PM MAIL   Вверх
Akella
Дата 22.11.2010, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



Лучше переводить в число и сравнивать.
PM MAIL   Вверх
valerchi
Дата 22.11.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Цитата(Akella @ 22.11.2010,  15:20)
Лучше переводить в число и сравнивать.

Всмысле, переводить в тип integer или вещественный? Но дело в том, что перевести не получается, - сильно числа большие (70 - 100 значные)
PM MAIL   Вверх
THandle
Дата 22.11.2010, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



XperT, как сказал ama_kid это просто самый элементарный пример сравнения. Все конечно зависит от того что за числа, какая запись и тд.
PM   Вверх
Keeper89
Дата 22.11.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



valerchi, создай отдельный класс, и предусмотри проверки, так будет получше.


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0739 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.