620₁₀ = 1154₈ - перевод показан во вложении.
111000₂ = 70₈. - разбиваем число справа налево по 3 цифры и заменяем каждую двоичную триаду соответствующей восьмеричной цифрой (111 000 = 7 0)
110₄ = 24₈
Тут сначала переводим в двоичную систему, заменяя каждую цифру двумя двоичными, (1 1 0 = 01 01 00 = 10100), а затем переводим в восьмеричную, как указано выше (010 100 = 2 4)
// PascalABC.NET 3.3, сборка 1625 от 17.01.2018
// Внимание! Если программа не работает, обновите версию!
function aToDec(n:string;k:integer):integer;
// Перевод из системы по основанию k в десятичную
begin
Result:=0;
var pa:=1;
for var i:=Length(n) downto 1 do begin
Result+=pa*(n[i].ToDigit);
pa*=k
end
end;
function DecToa(n,k:integer):string;
// Перевод из десятичной системы в систему по основанию k
begin
Result:='';
while n>0 do begin
Result:=n mod k+Result;
n:=n div k
end
end;
function AtoB(s:string;A,B:integer):string;
// Перевод из системы по основанию A в систему по основанию B
begin
Result:=DecToa(aToDec(s,A),B)
end;
begin
var n:=ReadlnString('Какое число перевести?');
var (a,b):=ReadInteger2('Исходное и результирующее основания:');
Writeln(n,'(',a,') = ',AtoB(n,a,b),'(',b,')');
end.
Результаты
Какое число перевести? 620
Исходное и результирующее основания: 10 8
620(10) = 1154(8)
Какое число перевести? 111000
Исходное и результирующее основания: 2 8
111000(2) = 70(8)
Какое число перевести? 110
Исходное и результирующее основания: 4 8
110(4) = 24(8)