function binToDec(s:string):integer;
var a,d,i:integer;
begin
a:=0;
d:=1;
for i:=length(s) downto 1 do
if s[i]='1' then a:=a+d;
d:=2*d;
end;
binTodec:=a;
var dv: string; fl:boolean; i:integer;
write('Введите двоичное число: ');
readln(dv);
while dv<>'0' do
fl:=true;
for i:=1 to length(dv) do
fl:=fl and (dv[i] in ['0','1']);
if fl then writeln(dv,'(2) = ',binToDec(dv),'(10)')
else writeln('Ошибка ввода');
write('Введите двоичное число:');
end.
Пример:
Введите двоичное число: 123
Ошибка ввода
Введите двоичное число:10101
10101(2) = 21(10)
Введите двоичное число:0
function decbin(n: int64): int64;
var k,m: int64;
priz: boolean;
k:=1; m:=0;
priz:=true;
repeat
if (n mod 10)>1 then
writeln('недопустимый ввод - цифра ',n mod 10);
priz:=false;
break;
m:=m+k*(n mod 10);
n:=n div 10;
k:=k*2;
until n=0;
if priz then decbin:=m
else decbin:=-1;
// основная программа
var n,k: int64;
readln(n);
if n=0 then break
else
k:=decbin(n);
if k>0 then writeln('десятичное число: ',k);
until false;
1011100011210
недопустимый ввод - цифра 2
11101101
десятичное число: 237
11111111
десятичное число: 255
0
function binToDec(s:string):integer;
var a,d,i:integer;
begin
a:=0;
d:=1;
for i:=length(s) downto 1 do
begin
if s[i]='1' then a:=a+d;
d:=2*d;
end;
binTodec:=a;
end;
var dv: string; fl:boolean; i:integer;
begin
write('Введите двоичное число: ');
readln(dv);
while dv<>'0' do
begin
fl:=true;
for i:=1 to length(dv) do
fl:=fl and (dv[i] in ['0','1']);
if fl then writeln(dv,'(2) = ',binToDec(dv),'(10)')
else writeln('Ошибка ввода');
write('Введите двоичное число:');
readln(dv);
end;
end.
Пример:
Введите двоичное число: 123
Ошибка ввода
Введите двоичное число:10101
10101(2) = 21(10)
Введите двоичное число:0
function decbin(n: int64): int64;
var k,m: int64;
priz: boolean;
begin
k:=1; m:=0;
priz:=true;
repeat
if (n mod 10)>1 then
begin
writeln('недопустимый ввод - цифра ',n mod 10);
priz:=false;
break;
end;
m:=m+k*(n mod 10);
n:=n div 10;
k:=k*2;
until n=0;
if priz then decbin:=m
else decbin:=-1;
end;
// основная программа
var n,k: int64;
begin
repeat
readln(n);
if n=0 then break
else
begin
k:=decbin(n);
if k>0 then writeln('десятичное число: ',k);
end;
until false;
end.
1011100011210
недопустимый ввод - цифра 2
11101101
десятичное число: 237
11111111
десятичное число: 255
0