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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен тип данных 1024 бит или более, Помогите подск комп или подкиньте исходн 
:(
    Опции темы
The Thing
Дата 17.11.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Очень срочно! Нужен тип данных 1024 бит или более.
Помогите пожалуйста может есть какие компоненты или стандартная реализация.

Я реализовал на vcpp а вот плохие знания дельфи не позволили мне его перекинуть. Может кто подскажет с моим исходником: как переписать некоторые строчки, а именно

Код

typedef BOOL BIT;

#define STANDART_CONT_BIT    1024   //Как будет в дельфи?
#define OSNOVANIE    2
#define VECTOR_CHAR    std::vector<char>
#define VECTOR_BIT    std::vector<BIT> //вместо этого я знаю можно использовать TList

typedef unsigned short USHORT;

class CBinType
{    VECTOR_BIT    m_BitType;
    USHORT        m_CountBit;

    //          >     <     =
    enum Comp {More, Less, Is}; //как это написать

public:
    CBinType(void);
    CBinType(char *str);
    CBinType(VECTOR_BIT &bit);
    CBinType(UINT Value);
    
    void Create(unsigned short size);

                 void SetValue(char *str);

public:
    VECTOR_BIT* GetBit();

    bool operator<(CBinType &bin); //сказали перегрузить стандартные операции нельзя.. - заменим
    bool operator<(VECTOR_BIT &bit);
    bool operator>(CBinType &bin);
    bool operator>(VECTOR_BIT &bit);
    bool operator==(CBinType &bin);
    bool operator==(VECTOR_BIT &bit);

    CBinType& operator++(); 
    CBinType operator-(CBinType &val);
    CBinType operator-(int val);

    CBinType operator+(CBinType &val);
    CBinType operator+(int val);

    CBinType operator*(CBinType &val);
    CBinType operator*(int val);


    CBinType& Pow(CBinType& btX, CBinType& btY, CBinType& btResult);//как описать такую функцию
/*
Я писал так:

function Pow(btX, btY, btResult: TBinType^): TBinType^;
так
function Pow(btX, btY, btResult: @TBinType): TBinType^;
короче не понял как надо правильно!

потом с функциями типа:
type
   PInt = ^Integer;
   TBinType = class
...
   function Fun(var Var1: Integer): PInt; //тут проходит! Почему нельзя вместо PInt написать ^Integer
...
end;

function TBinType.Fun(var Var1: Integer): PInt;
begin //ошибка.. что я не так делаю?
end;

implementation //кажется так в конце :)
end.

кстати "var Var1: Integer" - сказали указатель на тип Integer.. правильно?
*/


    VECTOR_BIT& Pow(VECTOR_BIT vbX, VECTOR_BIT vbY, VECTOR_BIT &vbResult);
    VECTOR_BIT& Pow(VECTOR_BIT &vbX, VECTOR_BIT &vbY, VECTOR_BIT &vbOsnov, VECTOR_BIT &vbResult);
    CBinType& Pow(CBinType& btX, CBinType& btY, CBinType &vbOsnov, CBinType& btResult);
protected:
    USHORT Fission(VECTOR_CHAR &vcValue, VECTOR_CHAR &vcResultFisshion);
    void FormatStringToBinary(char *str);
    VECTOR_BIT& Adding(VECTOR_BIT vbVar1, VECTOR_BIT vbVar2, VECTOR_BIT &vbResult);
    VECTOR_BIT& Adding(VECTOR_BIT &vbVar1, int iVar2, VECTOR_BIT &vbResult);
    VECTOR_BIT& Minus(VECTOR_BIT vbVar1, VECTOR_BIT vbVar2, VECTOR_BIT &vbResult);
    VECTOR_BIT& Minus(VECTOR_BIT &vbVar1, int iVar2, VECTOR_BIT &vbResult);
    VECTOR_BIT& Multiplying(VECTOR_BIT vbVar1, VECTOR_BIT vbVar2, VECTOR_BIT &vbResult);
    bool Comparison(CBinType &bin, int Comparison);
    void SetBit(VECTOR_BIT &bit);
    VECTOR_BIT& CBinType::invers(VECTOR_BIT &vbVar);
public:
    ~CBinType(void);
};


Добавлено @ 13:01 
если у кого есть исходник с реализацией такого типа поддерживающего вычисления, дайте плз!


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Snowy
Дата 17.11.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Это: http://vingrad.ru/DELPHI-DLP-002719 подойдёт?
PM MAIL   Вверх
The Thing
Дата 17.11.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Snowy @ 17.11.2006,  13:13)
Это: http://vingrad.ru/DELPHI-DLP-002719 подойдёт?

Ё мое! Спасибо! Вечно благодарен!  smile

Добавлено @ 13:39 
Хм.. от только 64 байта держит smile
А мне минимум 128 надо..
Может прокатит если 128 указать?


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Snowy
Дата 17.11.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Попробуй.
Я думаю и 65536 можно указать, если очень надо.
Просто это увеличит время вычислений.
PM MAIL   Вверх
The Thing
Дата 17.11.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня почемуто в процедуре

procedure HugeInt_Inc(var a: HugeInt);

в строке 

HugeIntCarry := h > 0; (во всех идентичных строках)

Вылазиет ошибка
[Error] Unit2.pas(146): Left side cannot be assigned to

Как с ней бороться? Не подскажешь?
Спасиба!

Добавлено @ 14:03 
HugeIntCarry := False; //Тоже самое

Добавлено @ 14:08 
Там написанно такое выражение


const

 HugeIntCarry: Boolean = False;
 HugeIntDiv0: Boolean = False;

Разве это выражение не говорит о том, что HugeIntCarry - константа?

Добавлено @ 14:09 
О заменил на var и все пошло


--------------------
Правильность работы программы зависит от двух велечин.
В нужном месте должны стоять нолик и еденичка.
PM MAIL   Вверх
Snowy
Дата 17.11.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Перенеси её в var
или пропиши в самом начале директиву {$J+}

Добавлено @ 14:48 
Ой, звиняюсь, не заметил, что уже сам нашёл smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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