一个进制转换的问题:
就是输入n进制的数,以及n,m,要转为m进制.若长度大于7,报错;
(http://acm.zju.edu.cn/show_problem.php?pid=1334)
题目不难,但是总是wrong.
给我看看代码吧,谢谢:
#include <iostream>
#include <stdlib.h>
#include <string>
#include <cmath>
#include <iomanip>
using namespace std;
const string str="0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
int main()
{
char ch;
char s[100];
int t[100];
while (cin>>ch)
{
int i=0,j=0;
for (i=0;i<100;i++)
{
s[i]=0;
t[i]=0;
}
i=0;
while (ch!=' ')
{
s[i]=ch;
i++;
cin.get(ch);
}
int from,to;
cin>>from>>to;
int sum=0;
for (j=0;j<i;j++)
{
if (int (s[j])<65)
sum+=(s[j]-48)*pow(from,i-1-j);
else sum+=(s[j]-55)*pow(from,i-1-j);
}
if (to==10)
{
if (sum>9999999)
cout<<setw(7)<<"ERROR"<<endl;
else
cout<<setw(7)<<sum<<endl;
}else if (sum==0)
cout<<setw(7)<<0<<endl;
else
{
int inc=0;
while (sum>0)
{
t[inc]=sum%to;
sum=sum/to;
inc++;
}
if (inc>7)
cout<<setw(7)<<"ERROR";
else
{
cout<<setw(8-inc);
for (j=inc-1;j>=0;j--)
cout<<str[t[j]];
}
cout<<endl;
}
}
return 0;
}