Написать функцию, которая переводит из дваичной системы в 10 пока пользователь не введёт 0.pascal

Вова3371346 Вова3371346    3   05.10.2019 12:30    1

Ответы
clykovsa clykovsa  09.10.2020 21:38

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

ПОКАЗАТЬ ОТВЕТЫ
бородкин бородкин  09.10.2020 21:38

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

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика