Реализуем алгоритм перевода числа из двоичной системы счисления в десятичную на языке Паскаль. Программа будет работать для двоичных чисел, состоящих из 10 цифр, т.к. мы используем тип данных LONGINT. Как реализовать данный алгоритм для любого двоичного числа — рассмотрим в следующих записях.
Задача будет полезна как приложение языка программирования к решению практических задач.
Всегда рад комментариям, пишите!
Можно приступать!
Как бы мы решали данную задачу на бумаге:
Мы умножаем каждую цифру числа на 2 в степени, соответствующей разряду этой цифры в числе, и складываем полученные произведения.
Для возведения числа ДВА в соответствующую степень, мы используем функцию (я назову ее STEP, выделена зеленым цветом).
Рассмотрим код программы:
function step(x:integer):longint; var i:integer; st:longint; begin if x=0 then step:=1 else begin st:=1; for i:=1 to x do begin st:=st*2; step:=st; end; end; end; var k,a,b,d,s:longint; begin s:=0; k:=0; readln(a); repeat b:=a mod 10; // отделяем последнюю цифру числа d:=a div 10; // запоминаем число без последней цифры s:=s+b*step(k); k:=k+1; a:=d; until d=0; writeln(s); end.
В программе используется цикл с постусловием: когда целая часть числа станет равной нулю, т.е. отделим все цифры числа, мы выходим из цикла.
Функция STEP возвращает значение: число ДВА в некоторой степени k.
Процесс работы программы смотрите в презентации «Перевод из двоичной системы счисления в десятичную. Паскаль» (скачать)
Проверял — работает => использовал в своей программе)
spasibo Andrey vam bolshoe dolgo iskal etu programmu)))))
А почему не по схеме Горнера? Намного проще и эффективнее.
Схема классная, очень хорошо помогла. Спасибо!