您的位置:首页 > 其它

ZOJ 1334 任意进制转换

2010-05-11 10:24 281 查看
#include<iostream.h>
#include<string.h>
#include<math.h>
#include<iomanip.h>
char s[100];
char chu[1000][100];
//由于每一次输出chu,之后如果又使用chu的话,chu里面的数据并
//没有消去,则有问题,所以开了一个字符串数组1000位,但这好
//像并没有解决实际问题……
int main()
{
long from,to,a,i,j,k,temp,sum,jishu=0;
while((cin>>s>>from>>to)!=NULL)
{
sum=0;
k=strlen(s);
for(i=0;i<k;i++)
{
if(s[i]>'9')
a=s[i]-'A'+10;
else
a=s[i]-'0';
sum+=pow(from,k-i-1)*a;
}
if(to!=10)
{
j=0;
while(sum!=0)
{
if(sum%to>=10)
chu[jishu][j]=sum%to-10+'A';
else
chu[jishu][j]=sum%to+'0';
sum/=to;
j++;
}

for(i=0;i<j/2;i++)
{
temp=chu[jishu][i];
chu[jishu][i]=chu[jishu][j-i-1];
chu[jishu][j-i-1]=temp;
}
if(strlen(chu[jishu])<=7)
cout<<setiosflags(ios::right)<<setw(7)<<chu[jishu]<<endl;
else
cout<<setiosflags(ios::right)<<setw(7)<<"ERROR"<<endl;

}

else
{
if(sum/10000000==0)
cout<<setiosflags(ios::right)<<setw(7)<<sum<<endl;
else
cout<<setiosflags(ios::right)<<setw(7)<<"ERROR"<<endl;
}
jishu++;

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: