• Всех приветствую! Если Вам не сложно, то хотел бы попросить помочь. Задачу необходимо решить на ЯП Pascal с использованием подпрограмм, если можно, то с комментариями переменных и некоторых функций. Системы счисления: 2, 8, 10 и 16. Типа real чтобы число можно было записать с десятичной дробью пример:(2.25) . Заранее спасибо.

Ответы 3

  • не работает
  • Бессмысленное заявление. Что именно не работает? что происходит? Что делали? Что вводили?
    • Автор:

      allieemml
    • 6 лет назад
    • 0
  • // PascalABC.NET 3.3.5, сборка 1644 от 23.03.2018// Внимание! Если программа не работает, обновите версию!function aToDec(n:string;k:integer):string;// Перевод из системы по основанию k в десятичнуюbegin  var s:='0123456789ABCDEF';  Result:='';  var PointPos:=Pos('.',n);  if PointPos>0 then begin // есть дробная часть    var sFracPart:=n[PointPos+1:];    var r:=0.0;    var p:=k;    foreach var c in sFracPart do begin      r+=(Pos(c,s)-1)/p;      p*=k;      end;    Result:=r.ToString[2:]    end  else PointPos:=n.Length+1;  var pa:=1;  n:=n[:PointPos];  var p:=0;  foreach var c in n.Reverse do begin    p+=pa*(Pos(c,s)-1);    pa*=k    end;  Result:=p.ToString+Resultend;function DecToa(n:string;k:integer):string;// Перевод из десятичной системы в систему по основанию kbegin  var s:='0123456789ABCDEF';  Result:='';  var PointPos:=Pos('.',n);  var IntPart:integer;  if PointPos>0 then begin // есть дробная часть    var FracPart:=Frac(n.ToReal);    var m:=0;    while True do begin      var r:=FracPart*k;      Result+=s[Trunc(r)+1];      FracPart:=Frac(r);      m+=1;      if (m=15) or (FracPart=0) then break      end;    IntPart:=n[:PointPos].ToInteger;    end  else IntPart:=n.ToInteger;  if Result<>'' then Result:='.'+Result;  while IntPart>0 do begin    Result:=s[IntPart mod k+1]+Result;    IntPart:=IntPart div k    end;  if Result='' then Result:='0';  if Result[1]='.' then Result:='0'+Resultend;function AtoB(s:string;A,B:integer):string;// Перевод из системы по основанию A в систему по основанию Bbegin  if A=10 then Result:=DecToa(s,B)  else    if B=10 then Result:=aToDec(s,A)    else Result:=DecToa(aToDec(s,A),B)end;    begin  var n:=ReadlnString('Какое число перевести?');  var (a,b):=ReadInteger2('Исходное и результирующее основания:');  Writeln(n,'(',a,') = ',AtoB(n,a,b),'(',b,')');end.ПримерКакое число перевести? 345.653Исходное и результирующее основания: 8 16345.653(8) = E5.D58(16)
    • Автор:

      pb&jelsr
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years