Товарищи программисты есть у меня такой вопрос срочной важности есть вот такой вот код, переводит из систем счисления ,
#include
#include
#include
using namespace std;
int main()
{int ss1, ss2;
int i,n,z=0,coord=0,k=0,j,a[20],ost=0,t=0,T=8,I;
float d=0,r=0,c=0,p,h;
char s[20];
cout << "chislo " << endl;
gets(s);
n=strlen(s);
cout<<"iz ? ";
cin>>ss1;
cout<<"v ? ";
cin>>ss2;
for(i=0;i= 0; i--)
{if (s[i]<58) //58:"9"
{z=z+(s[i] - 48)*p; //48:"0"
p=p*ss1;} //степень множителя на 1 повышаем
{z=z+(s[i] - 55)*p;
p=p*ss1;}
}
}
else // дробь
{p=1;
for(i=coord-1;i>=0;i--) //с последний цифры до 1
{if (s[i]<58)
{z=z+(s[i] - 48)*p;
p=p*ss1;}
else
{z=z+(s[i] - 55)*p;
p=p*ss1;}
}
p=1;
for (i=coord+1;i<n;i++) // для дроби с 1 цифры считаем
{if (s[i]<58)
{p= p / ss1;
d = d+(s[i] - 48)*p;}
else
{p= p / ss1;
d = d+(s[i] - 55)*p;}
}
}
j=0;
do {ost=z%ss2; // остаток
a[j]=ost;
j++; k++;
z=(z-ost)/ss2;}
while (z>0);
for (j=k-1;j>=0;j--)
if (a[j] < 10)
cout << a[j];
if (d!=0) cout<<".";
char nol[9]={0};
int K,Y=8,tik=0;
do
{T--;
r=d*ss2;
t=(int)r;
if(t < 10)
nol[tik++]=t+'0';
d=r-t;}
while (T!=0);
for(K=tik-1;K>=0;K--)
{if (nol[K]=='0') Y--;
else break;} // убираем нули
for (K=0;K<Y;K++)
cout<<nol[K];
return 0;
}
можете ли вы полностью объяснить код ка он рабоатет мне нужно для защиты
форматированный ввод-вывод позволяет преобразовать число в строку в системе с любым основанием (radix)
Или
Посмотри функцию itoa cppstudio.com/post/9952/
И!!!!
Не ИЗОБРЕТАЙ ВЕЛОСИПЕД!!!!
А какие основания систем счисления?
обратись к автору программы