Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.048 c
6-1111736034
Илья
2005-03-25 10:33
2005.06.14
Передача файлов по сети


4-1114194303
Merl
2005-04-22 22:25
2005.06.14
SetWindowRgn


1-1116925972
Starcom
2005-05-24 13:12
2005.06.14
Как запаролить вход в программу


1-1117188948
sapsi
2005-05-27 14:15
2005.06.14
архивация текстового файла программно


3-1115229873
Damager
2005-05-04 22:04
2005.06.14
Ошибка при редактирвании данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский