Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.06.2011, 01:35
ambrosio ambrosio вне форума
Прохожий
 
Регистрация: 21.06.2011
Сообщения: 2
Репутация: 10
Восклицание Перевод из одной системы счисления в другую

Доброй ночи! Скажите,пожалуйста, что не правильно в программе, не понимаю, почему не идет?
Задание:
Написать программу на языке программирования, которая преобразует введённое двоичное число в десятичное.
Код:
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;
Админ: Пользуемся тегами для оформления кода!
Изображения
Тип файла: jpg Безымянный.jpg (63.6 Кбайт, 28 просмотров)

Последний раз редактировалось Admin, 21.06.2011 в 09:41.
Ответить с цитированием
  #2  
Старый 21.06.2011, 01:44
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Открываем исходники Дельфи (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  
Старый 21.06.2011, 02:12
ambrosio ambrosio вне форума
Прохожий
 
Регистрация: 21.06.2011
Сообщения: 2
Репутация: 10
По умолчанию

Аааа, что-то непонятное мне написали(
Ответить с цитированием
  #4  
Старый 21.06.2011, 02:24
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Нечаянно соврал, это не из исходников Дельфи - из компонента 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  
Старый 21.06.2011, 08:51
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию

А что конкретно не работает? Неправильно считает, выдает ошибку или не компилируется? Вы модуль math подключили?
Ответить с цитированием
  #6  
Старый 22.06.2011, 21:10
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию повторяем пройденное

Здесь калькулятор переводящий числа по любому основанию
Компилировать в Delphi7
Между прочим довольно удобен как подручное средство

Я уже кому- то его дарил на форуме (не помню кому)
Дарю еще раз. И снова безвозмездно (то есть даром)
Оказывается эта тема востребована...
Вложения
Тип файла: zip 2-8-16.ZIP (203.1 Кбайт, 231 просмотров)
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо chainik за это полезное сообщение:
Drazdranagon (21.02.2017), СЕРЁЖА ЮЗГУ ИБ-41 (06.10.2014)
  #7  
Старый 23.06.2011, 00:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Как-то так:

Код:
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  
Старый 07.05.2012, 15:43
anyta anyta вне форума
Прохожий
 
Регистрация: 07.05.2012
Сообщения: 1
Репутация: 10
По умолчанию информатика

можете пожалуйста помочь мне нужно написать программу перевода 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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025