Перевод с двоичной системы счисления, в десятичную рекурсией - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, натолкните на идею, нужно написать рекурсивную программу которая переводит из двоичной системы счисления в десятичную. Мои мысли по решению: разбить число на цифры, а за тем рекурсией умножать их на пример: 1101 = 1*20+0*21+1*22+1*23. Но я попал в тупик, после того как преобразовал число в цифры, я не знаю что с ними дальше делать.
Листинг программы
  1. program binToDec;
  2. VAR n:integer;
  3. function ToArr(n:integer):integer;
  4. VAR
  5. strLen, i : integer;
  6. nConv : string;
  7. digit : array [1..255] of integer;
  8. begin
  9. nConv := IntToStr(n);
  10. strLen := length(nConv);
  11. for i:=1 to strLen
  12. do begin
  13. digit[i] := n mod 10;
  14. n := n div 10;
  15. end;
  16. end;
  17. begin
  18. Write('Введите двоичное число: ');
  19. Read(n);
  20. ToArr(n);
  21. end.
Спасибо!

Решение задачи: «Перевод с двоичной системы счисления, в десятичную рекурсией»

textual
Листинг программы
  1. function ToDec(n: string): longint;
  2. begin
  3.   if length(n) = 0 then ToDec := 0
  4.   else
  5.     ToDec := ToDec(LeftStr(n, length(n) - 1)) * 2 +
  6.                Ord(n[length(n)] = '1');
  7. end;
  8.  
  9. var
  10.   bin: string;
  11.  
  12. begin
  13.   readln(bin);
  14.   writeln(ToDec(bin))
  15. end.

Объяснение кода листинга программы

  1. Входные данные: строка bin, представляющая двоичное число.
  2. Функция ToDec принимает строку, представляющую двоичное число, и возвращает десятичное число.
  3. Если длина строки равна 0, то возвращается 0.
  4. В противном случае, функция рекурсивно вызывается для LeftStr(n, length(n) — 1), умножая результат на 2 и добавляя значение Ord(n[length(n)]), которое равно 1, если n[length(n)] равно '1', иначе 0.
  5. В основной программе вводится двоичное число, затем вызывается функция ToDec, передавая в неё это число, и результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы