Двоичное число, введенное пользователем программы, преобразовать в десятичное число. Результат вывести на экран.
binary – двоичное число;
n – его длина;
digit – цифра очередного разряда;
m - степень двойки;
decimal – десятичное число.
Основная ветка программы:
1. Двоичное число хранится в программе в виде строки.
2. Измеряется его длина, т.е. количество символов. Это необходимо для возведения двойки каждого разряда в соответствующую ему степень (см. формулу).
3. В цикле перебирается каждый символ строки.
a. Символ преобразовывается в число.
b. Находится степень, в которую должна возводиться двойка. Для первого символа она на единицу меньше длины строки. Для каждого следующего уменьшается на единицу.
c. Если число разряда не равно 0, то
d. возвести двойку в степень,
e. а результат добавить к десятичному числу.
Функция возведения двойки в заданную степень:
1. Получить степень
2. Присвоить результату функции значение 1.
3. Умножать результат на 2, пока не будет достигнута заданная степень.
var binary: string; n: byte; digit: byte; m: byte; decimal: integer; i: byte; function pow2(m: byte):integer; var i: byte; begin pow2 := 1; for i := 1 to m do pow2 := pow2 * 2; end; begin write('Binary: '); readln(binary); n := length(binary); decimal := 0; m := n; for i:=1 to n do begin digit := ord(binary[i]) - ord('0'); m := m - 1; if digit = 1 then decimal := decimal + pow2(m); end; writeln('Decimal: ',decimal); readln end.
Комментарии
function pow2(m: