Помогите решить это задание

0 голосов
29 просмотров

Помогите решить это задание


image

Информатика (1.7k баллов) | 29 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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)


image
(150k баллов)