Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2018, 09:57   #1
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
Печаль Перевод из 10-ной СС в 8-ную СС. Не получается с переводом дробных чисел, на целые код есть. (Язык Delphi)

Перевод из 10-ной СС в 8-ную СС. Не получается с переводом дробных чисел, на целые код есть.

Код:
  const cf:array [0..8] of char = ('0','1','2','3','4','5','6','7','8');
  var
  Perevod: TPerevod;
  a,n:integer;
 
implementation
 
{$R *.dfm}
 
 
function Oct(x: Integer): string;
const digits:array [0..8] of char = ('0','1','2','3','4','5','6','7','8');
var res:string; d:0..8;
begin
   res:='';
   while (x<>0) do begin
      d:=x mod 8; res:=digits[d]+res;
      x:=x div 8;
   end;
   Oct:=res;
 
end;
 
procedure TPerevod.Button1Click(Sender: TObject);
begin
 a:=strtoint(Edit1.Text);
 Label2.Caption:=(Oct(a));
end;
reijii_nia вне форума Ответить с цитированием
Старый 26.12.2018, 10:54   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не красиво содранное за своё выдавать )
Код:
function Oct(x: Real; Precision: Byte): string;
var y: Int64;
    i: Integer;
begin
  Result:='';
  y:=Trunc(Abs(x));
  while y>0 do begin
    Result:=IntToStr(y mod 8)+Result;
    y:=y div 8;
  end;
  if Result='' then Result:='0'
  else if x<0 then Result:='-'+Result;

  if Precision>0 then begin
    Result:=Result+DecimalSeparator;
    x:=Frac(Abs(x));
    for i:=1 to Precision do begin
      Result:=Result+IntToStr(Trunc(x*8));
      x:=Frac(x*8);
    end;
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.12.2018, 11:19   #3
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не красиво содранное за своё выдавать )
Код:
function Oct(x: Real; Precision: Byte): string;
var y: Int64;
    i: Integer;
begin
  Result:='';
  y:=Trunc(Abs(x));
  while y>0 do begin
    Result:=IntToStr(y mod 8)+Result;
    y:=y div 8;
  end;
  if Result='' then Result:='0'
  else if x<0 then Result:='-'+Result;

  if Precision>0 then begin
    Result:=Result+DecimalSeparator;
    x:=Frac(Abs(x));
    for i:=1 to Precision do begin
      Result:=Result+IntToStr(Trunc(x*8));
      x:=Frac(x*8);
    end;
  end;
end;
Спасибо большое.
И кстати, я и не писал что это мое. Я написал что код есть
reijii_nia вне форума Ответить с цитированием
Старый 26.12.2018, 11:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
if Result='' then Result:='0'
else if x<0 then Result:='-'+Result;
Код:
if Result='' then Result:='0';
if x<0 then Result:='-'+Result;
или заменить while на repeat тогда первый if не нужен
Цитата:
И кстати, я и не писал что это мое. Я написал что код есть
А я наивно думал, что когда пишу - есть код, то он мой, выстраданный, ночами не спал бедненький, шерстью успел обрасти за эти ночи. Да, чего уж там )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 26.12.2018 в 14:52.
Аватар вне форума Ответить с цитированием
Старый 27.12.2018, 06:17   #5
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А я наивно думал, что когда пишу - есть код, то он мой, выстраданный, ночами не спал бедненький, шерстью успел обрасти за эти ночи. Да, чего уж там )
Да не, прост курсач свалился нежданно негадано, вот и не было времени самому писать код, пришлось искать готовые варианты.
reijii_nia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из 4-ной системы счисления в 5-ную ВеРоНиЧкА92 Помощь студентам 2 02.02.2014 22:19
Перевод из 16-ной в 2-ную(код в нутри) skanku Общие вопросы C/C++ 1 07.12.2011 19:53
перевод дробных чисел ArniLand Общие вопросы C/C++ 0 19.02.2011 18:58
Программа для перевода из 16-ной с/c в 2-ную fult Паскаль, Turbo Pascal, PascalABC.NET 0 05.05.2009 21:57
перевод из 4-ной в 3-ную систему счисления Mike07 Помощь студентам 1 07.10.2007 18:53