Составить программу, которая вводит натуральное число N и основание системы счисления p, а затем выводит цифры Aк представления N в p – ричной системе. Вот нашел функцию. Можете подробно прокоментировать каждую строчку плииз?
function _10toR(x:longint;R:word):string;
var x,ost:longint;
s,st,chislo:string;
beginrepeat
ost:=x mod R;
x:=x div R;
if ost>9then st:=chr(ord('A')-10+ost)
else str(ost,st);
s:=s+st;
until x=0;
for i:=1to 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
Спасибо большое разобрался!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.