Главная страница
    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.038 c
3-1115273164
Belkova
2005-05-05 10:06
2005.06.14
ShowModal и locate


3-1115179948
IBNovice
2005-05-04 08:12
2005.06.14
Помогите с запросом


14-1116877897
Yegorchic
2005-05-23 23:51
2005.06.14
Описание программных средств, для написания сайтов


14-1116964489
Zer0
2005-05-24 23:54
2005.06.14
психоакустика


1-1117114924
lema
2005-05-26 17:42
2005.06.14
Вопрос по QuickRep





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский