const sNum : array [0..15] of char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); sBases : array [0..4] of char = ('d','b','t','o','h'); var NUMS : array ['0'..'f'] of byte; BASES : array ['B'..'t'] of byte; Inp,Sout : string; Base,pos : byte; Number,cur:longint; begin WriteLn('Enter number in ''b'',''t'',''o'',''d'',''h'' systems'); ReadLn(Inp); FillChar(Nums,Sizeof(NUMS),255); for pos := $30 to $39 do NUMS[chr(pos)] := pos-$30; for pos := $41 to $46 do NUMS[chr(pos)] := pos-$37; for pos := $61 to $66 do NUMS[chr(pos)] := pos-$57; Bases['b']:=2;Bases['t']:=4;Bases['o']:=8;Bases['h']:=16;Bases['d'] := 10; Bases['B']:=2;Bases['T']:=4;Bases['O']:=8;Bases['H']:=16;Bases['D'] := 10; Base := Bases[inp[ord(inp[0])]]; if Base = 0 then begin WriteLn('Error in base of entred number');Halt(255);end; for pos := 1 to ord(inp[0])-1 do begin if NUMS[Inp[pos]] >= Base then begin WriteLN('Error in input string, at pos ', pos); Halt(254); end; Number := Number * base; Inc(Number,NUMS[Inp[pos]]); end; WriteLn('Введенное число в др. системах счисления:'); for pos := 0 to 4 do begin base := Bases[sBases[pos]]; sOut:=''; cur := number; repeat insert(sNum[Cur mod base],sOut,0); Cur := cur div base; until cur = 0; WriteLn(sOut,sBases[pos]); end; end.