Перевод двоичного числа в десятичное

Задача

Двоичное число, введенное пользователем программы, преобразовать в десятичное число. Результат вывести на экран.

Решение

 

Описание переменных: 

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.

 

Тема

Процедуры, функции, рекурсии

Уровень

Комбинированные задачи

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.