IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Рекурсивная функция
Гость
сообщение 10.05.2007 16:33
Сообщение #1


Гость






Помогите, пожалуйста !!!!
Дана символьная строка, представляющая собой запись натурального числа в р-ичной системе счисления (2 <= р<= 9). Составить программу перевода этого числа в десятичную систему счисления. Нужно сделать, используя РЕКУРСИВНУЮ ФУНКЦИЮ.
 К началу страницы 
+ Ответить 
klem4
сообщение 10.05.2007 16:37
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


в FAQ есть функция по переводу числа из 10-ой в любую и наоборот, но не рекурсивная, попробуй переделать сам.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 10.05.2007 16:47
Сообщение #3


Гость






Цитата(klem4 @ 10.05.2007 16:37) *

в FAQ есть функция по переводу числа из 10-ой в любую и наоборот, но не рекурсивная, попробуй переделать сам.


Пробовал переделать , но никак не получается. Возможно нужно делать другим способом. И что за ошибка "Stack overflow error mega_chok.gif " ?
 К началу страницы 
+ Ответить 
klem4
сообщение 10.05.2007 17:50
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Мм ну вот проверь это:

function to_dec(const s: String; const p: Byte; const T: Integer): LongInt;
begin
if Length(s) = 0 then to_dec := 0 else
to_dec := (ord(s[Length(s)]) - 48) * T +
to_dec(Copy(s, 1, Length(s) - 1), p, T * p);
end;

begin
writeln(to_dec('1202', 3, 1));
end.


в примере перевод числа '1202' из троичной


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.05.2007 17:50
Сообщение #5


Гость






Цитата
Пробовал переделать , но никак не получается.
В следующий раз приводи свой способ...

Вот так перевод в 10 с/с делается рекурсивно:
function ToDecR(n:string; radix:longint):longint;
const digit: string[16] = '0123456789ABCDEF';
begin
if length(n) = 0 then ToDecR := 0
else
ToDecR := ToDecR(copy(n, 1, length(n) - 1), radix) * radix +
pos(n[length(n)],digit) - 1;
end;

 К началу страницы 
+ Ответить 
Гость
сообщение 10.05.2007 18:02
Сообщение #6


Гость






БОЛЬШОЕ СПАСИБО!!! good.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.06.2025 10:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"