Перевести число из 2-ой системы счисления в 10-ую. Обеспечить корректность ввода числа в...

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

Перевести число из 2-ой системы счисления в 10-ую. Обеспечить корректность ввода числа в систему cчисления . Нельзя использовать стандартные возможности по выводу/вводу чисел.Паскаль


Информатика (342 баллов) | 34 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1579 от 18.11.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadlnString('Двоичное число:');
  if s.MatchValues('[^01]').Count>0 then Writeln('Не двоичное число')
  else begin
    var (n,k):=(BigInteger(0),BigInteger(1));
    for var i:=s.Length downto 1 do begin
      if s[i]='1' then n+=k;
      k*=2
      end;
    Writeln('Десятичное значение: '+n.ToString)
    end
end.

Примеры
Двоичное число: 10101010101111110100010101010101010101010110101010101
Десятичное значение: 6007631318265173

Двоичное число: 11110101010101010010010101010110101011011110100000110100100101010101010101010101010101101010101011010101010101010101010101011111111111110101001010000001010101011111010010101
Десятичное значение: 11473727937279925775504671485025665850663901141319317
(150k баллов)