![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброй ночи! Скажите,пожалуйста, что не правильно в программе, не понимаю, почему не идет?
Задание: Написать программу на языке программирования, которая преобразует введённое двоичное число в десятичное. Код:
procedure TForm1.Button1Click(Sender: TObject); var i,n,j:integer; s:string; sum:real; begin sum:=0; s:=Edit1.Text; n:=length(s); for i:=1 to n do begin j:=n-i; sum:=sum+(strtoint(s[i])*IntPower(2,j)); end; Edit2.Text:=floattostr(sum); end; Последний раз редактировалось Admin, 21.06.2011 в 09:41. |
#2
|
||||
|
||||
![]() Открываем исходники Дельфи (ValEdit.pas) и видим:
Код:
function TNumberEdit.DecToBin(aValue: LongInt): String; var w: Array[1..2] of Word absolute aValue; St: String; function BinByte(b: Byte): String; const Bin: Array[False..True] of Char = '01'; begin Result := Bin[b and 128 = 128] + Bin[b and 64 = 64] + Bin[b and 32 = 32] + Bin[b and 16 = 16] + Bin[b and 8 = 8] + Bin[b and 4 = 4] + Bin[b and 2 = 2] + Bin[b and 1 = 1]; end; function BinWord(w: Word): String; begin BinWord := BinByte(Hi(w)) + BinByte(Lo(w)); end; begin St := BinWord(w[2]) + BinWord(w[1]); while (St[1] = '0') and (Length(St) > 1) do Delete(St, 1, 1); Result := St; end; |
#3
|
|||
|
|||
![]() Аааа, что-то непонятное мне написали(
|
#4
|
||||
|
||||
![]() Нечаянно соврал, это не из исходников Дельфи - из компонента NConvertor. Вот варианты в обе стороны:
Код:
function BinToDecStr(bin: string): longint; var i : integer; begin Result := 0; for i := 1 to length(bin) do begin if not (bin[i] in ['0','1']) then begin Result := 0; Exit; end; if bin[i] = '1' then Result := Result + (1 shl (length(bin) - i)); end; end; function DecToBinStr(Value: Integer): string; begin Result := ''; while Value > 0 do begin if Odd(Value) then Result := '1' + Result else Result := '0' + Result; Value := Value shr 1; end; if Result = '' then Result := '0'; end; Последний раз редактировалось angvelem, 21.06.2011 в 02:56. |
#5
|
||||
|
||||
![]() А что конкретно не работает? Неправильно считает, выдает ошибку или не компилируется? Вы модуль math подключили?
|
#6
|
|||
|
|||
![]() Здесь калькулятор переводящий числа по любому основанию
Компилировать в Delphi7 Между прочим довольно удобен как подручное средство Я уже кому- то его дарил на форуме (не помню кому) Дарю еще раз. И снова безвозмездно (то есть даром) Оказывается эта тема востребована... |
Эти 2 пользователя(ей) сказали Спасибо chainik за это полезное сообщение: | ||
Drazdranagon (21.02.2017),
СЕРЁЖА ЮЗГУ ИБ-41 (06.10.2014)
|
#7
|
|||
|
|||
![]() Как-то так:
Код:
function BinToDec(ABin : String) : Integer; var I : Integer; begin Result := 0; For I := Length(ABin) DownTo 1 Do Begin Result := Result shl 1; If ABin[i] = '1' Then Result := Result + 1; End; end; Вообще, можно было и свмому подумать, а не тырить код откуда-то и потом мучаться с ним. |
#8
|
|||
|
|||
![]() можете пожалуйста помочь мне нужно написать программу перевода Bin to Dec (из 2 в десятичную систему) на Delphi с использованием функции StrToInt и чтобы можно было вводить числа с запятой . заранее спасибо . вот на примере программы обратной данной, в каком обьекте ее писать в кнопке "Ок" или в "Combobox" подскажите пожалуйста..заранее спасибо ..
Пример из 10 в 2 систему: Код:
procedure TForm1.Button1Click(Sender: TObject); var I, J: LONGINT; DEC:integer;BIN:string; begin DEC:=strtoint(edit1.Text); if DEC = 0 then BIN:= '0' else begin BIN := ''; I := 0; while (1 shl (I + 1)) <= DEC do I := I + 1; for J := 0 to I do begin if (DEC shr (I - J)) = 1 then BIN := BIN + '1' else BIN := BIN + '0'; DEC := DEC and ((1 shl (I - J)) - 1); end; end; label1.Caption:= BIN; end; end. lmikle: Пользуемся тегами!!! Последний раз редактировалось lmikle, 07.05.2012 в 19:20. |