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

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

Задать свой вопрос
Нина
нельзя записать просто 0, а все остальнык числа можно
Никитка Берглезов
Программа решается с подмогою цикла while, предоставляя пользователю ввод любой из цифр (0 либо 1). Если Вы просто предложите записать число в одну переменную - так программа не поймёт, когда конкретно ей надобно закончить предоставление ввода.
Виолетта Загная
И да, почему это нельзя 0 просто? 0 в двоичной = 0 в десятичной либо хоть какой иной
Nazhalov Danil
А сейчас прочитай мой заключительный комментарий.
Геннадий Ликоренко
Если юзер вводит 0,то цикл как и сама программка завершает свою работу,будь то просто 0 либо же 101010
2 ответа

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


, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт