Составить программу, которая вводит натуральное число N и основание системы счисления p, а затем выводит цифры Aк представления N в p – ричной системе. Вот нашел функцию. Можете подробно прокоментировать каждую строчку плииз?
function _10toR(x:longint;R:word):string; var x,ost:longint; s,st,chislo:string; begin repeat ost:=x mod R; x:=x div R; if ost>9 then st:=chr(ord('A')-10+ost) else str(ost,st); s:=s+st; until x=0; for i:=1 to length(s) do chislo:=chislo+s[length(s)-i+1]; _10toR:=chislo; end;
function FromDec(n, radix:longint):string; var s: String; const digit: string[16]='0123456789ABCDEF'; begin s:=''; repeat s:=digit[(n mod radix)+1]+s; n:=n div radix; until n=0; FromDec:=s; end;
тут я так понял максимальная система счисления 16-ричная, а в задаче в любую надо. и еще не понятны вот эти строки
s:=digit[(n mod radix)+1]+s; n:=n div radix;
если не трудно поясните подробно плииз
Lodar'
29.01.2009 16:45
а какая система счисления максимальная?
Добавлено через 2 мин.
s:=digit[(n mod radix)+1]+s; n:=n div radix;
сам разобрался) но про максимальную с.с вопрос остается открытым
volvo
29.01.2009 16:49
Цитата
а в задаче в любую надо
Любую, говоришь? Ну, попробуй сделать
writeln(_10toR(50652, 37));
, когда исправишь в самой функции все ошибки, чтоб она заработала. Посмотри, что будет... А ты говоришь "любую".
{ Сначала получаем остаток от деления числа на основание С/С, а потом дописываем к строке-результату _спереди_ символ, который в выбранной системе счисления (radix) соответствует полученному остатку. Вот и все, никаких преобразований число->строка, никаких условий, остаток больше или меньше 10... Все просто. (+1) - потому, что символы в строке индексируются с 1 } s:=digit[(n mod radix)+1]+s; { Ну, остаток мы записали в результат, теперь осталось обработать остальное: получаем целую часть от деления на основание, и продолжаем по тому же алгоритму. } n:=n div radix;
Lodar'
29.01.2009 17:20
Спасибо большое разобрался!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.