Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Двоичный --в--> десятичный   Найти похожие ветки 

 
KLOPs   (2005-05-25 21:46) [0]

Почему неправильно работает этот код?
Задача: преобразовать ХХХХХХХХ(2) в XXX(10)

function BinToInt(Value: string): LongInt;
var
 i, Size: Integer;
begin
 Result := 0;
 Size := Length(Value);
 for i := Size downto 0 do
 begin
   if Copy(Value, i, 1) = "1" then
   begin
     Result := Result + (1 shl i);
   end;
 end;
end;


 
Virgo_Style ©   (2005-05-25 21:55) [1]

for i := Size downto 1 do
begin
  if Value[i] = "1" then
  begin
    Result := Result + (1 shl (Size-i) );
  end;
end;


Не проверял.


 
Юрий Зотов ©   (2005-05-25 21:55) [2]

function BinToInt(Value: string): Int64;
var
 i: Integer;
begin
Result := 0;
for i := 1 to Length(Value) do
  Result := (Result shl 1) + Ord(Value[i]) - Ord("0")
end;


 
begin...end ©   (2005-05-25 21:57) [3]

> KLOPs   (25.05.05 21:46)

> for i := Size downto 0 do

for i := Size downto 1

> Result := Result + (1 shl i)

Result := Result + (1 shl (Size - i))

P.S. Функцию BinToInt из модуля idGlobal посмотрите. Оно рульно будет.


 
Kerk ©   (2005-05-25 22:10) [4]

Virgo_Style ©   (25.05.05 21:55) [1]
vs
begin...end ©   (25.05.05 21:57) [3]

ЛОООООООООООООООООООООООООООЛ :))))))


 
KLOPs   (2005-05-25 22:30) [5]

Спасибо братаны...
(begin...end special)


 
Kerk ©   (2005-05-25 22:55) [6]

Virgo_Style ©   (25.05.05 21:55) [1]

ты invisible забыл выключить :))))


 
Virgo_Style ©   (2005-05-25 23:01) [7]

Kerk ©   (25.05.05 22:55) [6]
Похоже на то :o)


 
Юрий Зотов ©   (2005-05-25 23:20) [8]

> KLOPs   (25.05.05 22:30) [5]

Теперь, когда Ваше решение после поправок заработало, предлагаю сравнить его и [3] по скорости.

Кстати, заголовок функции лучше изменить:
function BinToInt(const Value: string): Int64;


 
Defunct ©   (2005-05-26 04:55) [9]

Приведенные здесь функции "сжуют" строки вида
"sdjhffd43210" и никак не оповестят пользователя о том, что преобразовывется чипуха, а не Bin.
Причем рез-тат [2] и [1][3] будет отличаться.


 
Anatoly Podgoretsky ©   (2005-05-26 07:44) [10]

Обработка ошибок это для домашнего задания.


 
begin...end ©   (2005-05-26 08:57) [11]

> KLOPs   (25.05.05 22:30) [5]

Насчёт BinToInt я ошибся, её нет в idGlobal. Перепутал её с IntToBin. Прошу прощения. Поэтому, вероятно, действительно надо было писать собственную функцию -- в этой ветке лучшим решением является [2].

> Virgo_Style ©   (25.05.05 23:01) [7]

Просто когда я начинал писать ответ, Вашего ответа ещё не было. Мои извинения.


 
Virgo_Style ©   (2005-05-26 09:19) [12]

begin...end ©   (26.05.05 8:57) [11]
Мои извинения.


Спасибо, не за что :) Просто забавно получилось =)



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
3-1115815666
syte_ser78
2005-05-11 16:47
2005.06.14
когда рефрешить бд?


1-1117111852
<Lelik>
2005-05-26 16:50
2005.06.14
про поиск компонентов


14-1117030117
Андрей Жук
2005-05-25 18:08
2005.06.14
Финал Лиги Чемпионов


4-1113995312
anjey
2005-04-20 15:08
2005.06.14
Как спрятать програму от Alt+Tab


4-1114443615
RealGaffer
2005-04-25 19:40
2005.06.14
TWebBrowser