Function DECtoBIN(Dec : string) : string;
var Zbytek,Cislo, C : Integer;
    Bin, Bin2 : String;
begin
 Val(Dec,Cislo,C);
 Bin:=''; Bin2:='';
 Repeat
  Zbytek:=Cislo mod 2;
  If Zbytek > 0 then Bin:=Bin+'1' else Bin:=Bin+'0';
  Cislo:=Cislo div 2;
 Until Cislo<1;
 For C:=Ord(Bin[0]) downto 1 do BIN2:=BIN2+Bin[C];
 DECtoBIN:=BIN2;
end;

Function BINtoDEC(Bin : string) : string;
var Cislo, Mocnina : Integer;
    BIN2, DEC : String;
    CisloBitu : Byte;
begin
 BIN2:='';
 For CisloBitu:=Ord(Bin[0]) downto 1 do BIN2:=BIN2+BIN[CisloBitu];
 Mocnina:=1; Cislo:=0;
 For CisloBitu:=1 to Ord(Bin[0]) do
  begin
   Cislo:=Cislo+Ord((BIN2[CisloBitu]='1'))*Mocnina;
   Mocnina:=Mocnina*2;
  end;
 Str(Cislo,DEC); BINtoDEC:=DEC;
end;

var Dec,Bin:String;
    Volba:String;

Begin
 Repeat

  WriteLn('Prevod soustav');
  WriteLn(' a) BIN do DEC');
  WriteLn(' b) DEC do BIN');
  WriteLn(' k) konec');
  Write('Zadejte volbu: '); ReadLn(Volba);
  WriteLn;
  If (Volba='A')OR(Volba='a') then
   begin
    WriteLn('Prevod BIN to DEC;');
    Write('Zadejte BINARNI hodnotu cisla:'); ReadLn(BIN);
    WriteLn('Dekadicka hodnota cisla je:',BINtoDEC(BIN));
   end;
  If (Volba='B')OR(Volba='b') then
   begin
    WriteLn('Prevod DEC to BIN;');
    Write('Zadejte DEKADICKOU hodnotu cisla:'); ReadLn(DEC);
    WriteLn('Binarni hodnota cisla je:',DECtoBIN(DEC));
   end;
 Until (Volba='K')OR(Volba='k');
End.
