![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |