Код:
вводим число вида 1111000000111111000001111110000000011110000111100011110000111100001110000 на что получаем ошибку:значение было недопустимо малым или большим для int32...как это исправить?
program p589;
uses crt;
var
n : integer; // количество битов в числе
res : integer; // результат перевода бинарного числа в десятичное
i : integer; // счетчик
bit : integer; // текущий бит
procedure toBinnary(value : integer); // процедура перевода 10 числа в двоичное
var
i, k : integer; // счетчики
a : array [1..1000] of integer; // массив битов числа
begin
k := 0;
while (value > 0) do // пока наше 10-ое число не равно 0
begin
inc(k); // увеличиваем k
a[k] := value mod 2; // берем остаток от деления числа на 2
value := value div 2; // берем целую часть от числа при деление на 2
end;
while (a[k] = 0) do dec(k); // отбрасываем ведущие нули
for i := k downto 1 do // выводим биты числа
write(a[i]);
writeln();
end;
begin
write('Введите число n=');
read(n);
writeln('По условию последний бит числа не может равняться 0');
res := round(power(2,n-1)); // возводим в квадрат число n-1
for i := 1 to n-1 do // считываем биты числа
begin
write('Введите ', i ,' бит числа = ');
read(bit);
res := res + bit * round(power(2,i-1)); // переводим двоичное представление числа в 10 по правилу
end;
writeln('Числом p будет являться десятичное представление введенного двоичного числа'); // считаем результат
writeln('p+1');
toBinnary(res + 1);
end.