Перевод в систему счисления

Не как не моуг написать Перевод любого числа в люубю систему счисления. Тоесть вводим чсло и выбираем в какую систему счисленяи переводить он в нее переводит.. помогите плз очень надо
4 ответа

вот пример перевода в систему счисления до 9 включительно.с буковками сам додумаешь.
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
  const n=10;
  var t,i,h:integer; b:array[1..n] of integer;
  begin
  i:=1;
  readln(t,h);
while (t<>0) do begin
b[i]:=t mod h;
t:=t div h;i:=i+1;
end;
for i:=n downto 1 do
write(b[i]);
readln
end.


EFEFEFEF, ещё здесь посмотри. (Перевод между системами 2..16 - реализовано для целых и для целых/вещественных чисел.)


EFEFEFEF, ещё здесь посмотри. (Перевод между системами 2..16 - реализовано для целых и для целых/вещественных чисел.)
Из веществено я получил 2 числа.. Мне просто нужна функция сама которая перевдт я не могу понять от того кода какя функция переводит менно то число..
вот пример перевода в систему счисления до 9 включительно.с буковками сам додумаешь.
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
  const n=10;
  var t,i,h:integer; b:array[1..n] of integer;
  begin
  i:=1;
  readln(t,h);
while (t<>0) do begin
b[i]:=t mod h;
t:=t div h;i:=i+1;
end;
for i:=n downto 1 do
write(b[i]);
readln
end.
Блин не хочет ошибка.. кто ниубдь поиз напишите функция кооруая на выходе прсто надо 1 вводить само число 2 в какую систему счисления


EFEFEFEF, вот по той ссылке, что я давал, точно по твоему заданию:
//Преобразует число в запись этого числа в системе счисления с основанием aBase.
function NumToStrNum(aNum : Integer; aBase : Byte) : String;
const
  Digit : array[0..15] of Char = '0123456789ABCDEF';
var
  Num : Integer;
begin
  Num := aNum;
  Result := '';
  repeat
    Result := Digit[Num mod aBase] + Result;
    Num := Num div aBase;
  until Num = 0;
end;
Эта функция работает самостоятельно. Пользоваться ей надо так:
procedure TForm1.Button1Click(Sender: TObject);
var
  StrNum : String;
begin
  //Получить запись числа 16 в двоичной системе счисления.
  StrNum := NumToStrNum(16, 2); //StrNum = '10000';
  //Получить запись числа 16 в восьмеричной системе счисления.
  StrNum := NumToStrNum(16, 8); //StrNum = '20';
  //Получить запись числа 16 в шестнадцатиричной системе счисления.
  StrNum := NumToStrNum(16, 16); //StrNum = '10';
  //Получить запись числа 16 в десятичной системе счисления.
  StrNum := NumToStrNum(16, 10); //StrNum = '16';
Если использовать код полностью:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Label4: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
//Вычисляет какое число обозначает отдельная цифра.
function DigitToNum(aDigit : Char) : Integer;
begin
  case aDigit of
    '0'..'9' : Result := StrToInt(aDigit);
    'A', 'a' : Result := 10;
    'B', 'b' : Result := 11;
    'C', 'c' : Result := 12;
    'D', 'd' : Result := 13;
    'E', 'e' : Result := 14;
    'F', 'f' : Result := 15;
  else
    Raise Exception.Create('Незарегистрированная цифра');
  end;
end;
 
//Преобразует  в число запись числа aStrNum в системе счисления c основанием aBase.
function StrNumToNum(aStrNum : String; aBase : Byte) : Integer;
var
  i         : Integer;
  Weight    : Integer;
begin
  //1 - Вес самого младшего разряда - для первой итерации цикла.
  Weight := 1;
  Result := 0;
  for i := Length(aStrNum) downto 1 do begin
    Result := Result + DigitToNum(aStrNum[i]) * Weight;
    //Вес разряда на следующей итерации цикла.
    Weight := Weight * aBase;
  end;
end;
 
//Преобразует число в запись этого числа в системе счисления с основанием aBase.
function NumToStrNum(aNum : Integer; aBase : Byte) : String;
const
  Digit : array[0..15] of Char = '0123456789ABCDEF';
var
  Num : Integer;
begin
  Num := aNum;
  Result := '';
  repeat
    Result := Digit[Num mod aBase] + Result;
    Num := Num div aBase;
  until Num = 0;
end;
 
//Преобразует запись числа aStrNum1 в системе счисления с основанием aBase1
//в запись числа в системе с основанием aBase2.
function XCimalToYCimal(const aStrNum1 : String; aBase1, aBase2 : Byte) : String;
var
  Num : Integer;
begin
  Num := StrNumToNum(aStrNum1, aBase1);
  Result := NumToStrNum(Num, aBase2);
end;
 
//Проверка.
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit4.Text := XCimalToYCimal(
    Edit2.Text,
    StrToInt(Edit1.Text),
    StrToInt(Edit3.Text)
  );
end;
 
end.
То можно использовать функцию: XCimalToYCimal(). Она даёт большие возможности. С помощью неё можно переводить записи чисел между системами счисления. Вызывается она так:
procedure TForm1.Button1Click(Sender: TObject);
var
  StrNum : String;
begin
  //Преобразовать запись числа в десятичной системе счисления: '16' в запись в двоичной системе.
  StrNum := XCimalToYCimal('16', 10, 2); //StrNum = '10000';
  //Преобразовать запись числа в двоичной системе счисления: '11110000' в запись в десятичной системе.
  StrNum := XCimalToYCimal('11110000', 2, 10); //StrNum = '240';
  //Преобразовать запись числа в двоичной системе счисления: '11110000' в запись в шестнадцатиричной системе.
  StrNum := XCimalToYCimal('11110000', 2, 16); //StrNum = 'F0';