![]() |
|
#1
|
|||
|
|||
![]() Помогите пожалуйста написать программу, переводящую введенное число из N-ичной системы счисления в M-ичную. N и M выбирает пользователь из диапазона [2..36] . Примного благодарен
|
#2
|
|||
|
|||
![]() |
#3
|
||||
|
||||
![]() Сам писал такую программу, кидаю функцию для перевода из людой системы в любую:
Код:
function SysToSys(Num:string; OldSys,NewSys:byte):string; {подпрограмма возведения числа в степень} function InStep(Ch,St:byte):integer; var i:byte; begin Result:=1; if St>0 then for i:=1 to St do Result:=Result*Ch; end; {основная часть} var i,Rez:integer; L:byte; begin {перевод числа ( Rez ) в десятичную систему из старой ( OldSys ) } Rez:=0; L:=Length(Num); for i:=1 to L do Num[i]:=UpCase(Num[i]); for i:=1 to L do if Copy(Num,i,1)[1] in ['A'..'Z'] then Rez:=Rez+(Byte(Copy(Num,i,1)[1])-55)*InStep(OldSys,L-i) else Rez:=Rez+StrToInt(Copy(Num,i,1))*InStep(OldSys,L-i); {перевод числа ( Rez ) в новую систему ( NewSys ) из десятичной} WHILE Rez>= NewSys DO BEGIN if (Rez mod NewSys) in [10..35] then Result:=Char(55+(Rez mod NewSys))+Result else Result:=IntToStr(Rez mod NewSys)+Result; Rez:=Rez div NewSys; END; if Rez in [10..35] then Result:=Char(55+Rez)+Result else Result:=IntToStr(Rez)+Result; end; OldSys,NewSys - стараю и новая системы счисления (в интервале [2..36]) Возвращает результат в виде строки |