Перевод из 10 системы счисления в двоичную и из 10 в 16-ричную

IGOR66666666666

Программа для перевода из 10 системы счисление в двоичную и из 10 системы счисление в 16-ю
3 ответа

IGOR66666666666

uses crt;
function dectobin(x:integer):string;
const cf:string[2]='01';
var d:0..1;//цифры 0 и 1 в десятичной системе
begin
result:='';
while x>0 do //пока введенное число не 0
 begin
  d:=x mod 2;//берем остаток от деления на 2(0 или 1)
  result:=cf[d+1]+result;//добавляем к итоговой строке в начало цифру из массива 0 или 1
  x:=x div 2;//делим число на 2
 end;
end;
function dectohex(n:integer):string;
const  cf:string='0123456789ABCDEF';
begin
result:='';
while n>0 do
 begin
  result:=cf[n mod 16+1]+result;
  n:=n div 16;
 end;
end;
var n:integer;
    w:char;
begin
write('Введите натуральное число');
readln(n);
repeat
 clrscr;
 writeln('В какую систему перевести');
 writeln('1-в двоичную');
 writeln('2-в шестнадатеричную');
 writeln('другое-выход');
 readln(w);
 case w of
 '1':begin
     writeln(dectobin(n));
     write('Press Enter');
     readln
     end;
 '2':begin
     writeln(dectohex(n));
     write('Press Enter');
     readln
     end;
 else exit
 end;
until not(w in ['1','2'])
end.


IGOR66666666666

Const Rn : String[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
Var a : Longint;
 
Function DecToN(a : Longint; Raz : Byte) : String;
Begin
  If a>Raz-1 then DecToN:=DecToN(a div Raz,Raz)+Rn[(a mod Raz)+1]
  else DecToN:=Rn[a+1];
end;
 
Function NToDec(a : String; Raz : Byte) : Longint;
Begin
  If Length(a)>0 then NToDec:=Pos(a[1],Rn)-1+Raz*NToDec(Copy(a,2,Length(a)-1),Raz)
  else NToDec:=0;
end;
 
Begin
  Readln(a);
  Writeln('BIN: ',DecToN(a,2));
  Writeln('HEX: ',DecToN(a,16));
end.