21.05.2008, 00:51
общий
это ответ
Здравствуйте, Бесчастнов егор Алекандрович!
Перевод числа в двоичную систему счисления (как и в любую другую, впрочем) производится постепенным делением на основание системы, т.е. на 2. Число формируется из остатков от этого деления в обратном порядке. Подробнее о системах счисления можно почитать в <a href=http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F>Википедии</a>.
Программно реализуем так: сохраняем остаток от деления введённого числа на два в строку, после чего обрезаем число на сохранённый разряд (целочисленно делим на 2). Когда число обнулится, мы можем либо инвертировать строку, чтобы получить двоичное представление, либо, если необходимо получить число в виде числа, с конца перевести его в число. Это возможно не всегда, поскольку полученное двоичное число может не поместиться в стандартный тип, но в данной задаче размерность строго ограничена, поэьтому привожу такой вариант. Решение в приложении.
Удачи!
Приложение:
Var a, b, h, i: integer;s: string [4]; {Строка для двоичного представления числа}begin read (a); {Считываем число} if (a<0) or (a>15) then {Если не удовлетворяет условию} begin writeln (‘Bad info‘); {Сообщаем об ошибке} halt(1); {Выходим} end; b:=0; s:= ‘‘; {Обнуляем} while (a<>0) do {Пока число не равно 0} begin h:= a mod 2; {Получаем остаток от деления на 2} a:= a div 2; {Обрезаем число на сохранённый разряд} s:= s+chr(h+48); {Дописываем в строку символьное представление цифры (цифра+48, т.к. код нуля в ascii = 48)} end; for i:=length(s) downto 1 do {В обратном порядке формируем из строки число} b:=b*10+(ord(s[i])-48); writeln (b); {Выводим его на экран} readln; {Ждём реакции}end.