написать функцию, которая переводит из дваичной системы в 10 пока пользователь
Написать функцию, которая переводит из дваичной системы в 10 пока юзер не введёт 0.
Pascal
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 dvlt;gt;'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)gt;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 kgt;0 then writeln('десятичное число: ',k);
end;
until false;
end.
1011100011210
недопустимый ввод - цифра 2
11101101
десятичное число: 237
11111111
десятичное число: 255
0
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.
Русский язык.