|
|
|
| Привет. Есть две функции на Delphi которые позволяют переводить числа из любых систем счисления. Из-за низнание языка С++ (я Дельфин), не могу осуществить их на С++. Помогите перевести пожалуйста.
// Функция перевода из 10-й системы счисления в любую другую
function _10toR(x:longint;R:word):string;
var i, 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;
// Функция перевода из любой системы счисленияв 10-ю
function _Rto10(s:string;R:word):longint;
var z,m,n,i:integer;
function stepen(x,n:integer):longint;
var k,i:longint;
begin
k:=1;
for i:=1 to n do k:=k*x;
stepen:=k;
end;
begin
m:=0;
for i:=1 to length(s) do
begin
val(s[i],n,z);
if z<>0 then n:=10+ord(UpCase(s[i]))-ord('A');
m:=m+stepen(R,length(s)-i)*n;
end;
_Rto10:=m;
end; | |
|
|
|
|
|
|
|
для: 1CPatriot
(25.05.2007 в 06:57)
| | 1-я
char * _10toR(long x,unsigned int R)
{
long i,ost;
char s[256],st[256],chislo[256];
strcpy(s,"");
do{
ost=x%R;
x=x/R;
if(ost>9){st[0]='A'-10+ost;st[1]=0;}
else itoa(ost,st,10);
strcat(s,st);
}while(x==0);
strcpy(chislo,"");
for(i=1;i<strlen(s);i++)strcat(chislo,s[strlen(s)-i+1]);
return chislo;
}
|
| |
|
|
|