这段代码有问题http://www.spoj.com/problems/BASE/它在 Windows 和 linux 上运行良好,但是当我在 ideone 上运行它时,它没有显示任何输出。谁能告诉我这背后的原因是什么?
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<string>
#include<iostream>
using namespace std;
long int convert_base10(char *num, int base)
{
int len, dig;
long int result = 0;
len = strlen(num);
// printf("len = %d\n", len);
// converting to base 10
for(int i=0; i<len; i++)
{
if((num[len-i-1] >= 'A') && (num[len-i-1] <= 'F'))
dig = num[len-i-1] - 55;
else
dig = num[len-i-1] - 48;
result += (dig * pow(base, i));
// printf("num[%d] = %d\n", len-i-1, dig);
}
return result;
}
void convert_basei(long int num, int base, string &result1)
{
bool error = false;
int pos = 6;
char result[7], rem;
// initially storing space on all position
for(int i=0; i<7; i++)
result[i] = ' ';
while(num)
{
if((num % base) >= 10)
rem = (num % base) + 55;
else
rem = (num % base) + 48;
result[pos] = rem;//printf("result[%d] = %c\n", pos, rem);
num /= base;// printf("quotient = %d\n", num);
pos--;
if(pos < 0 && num > 0)
{
error = true;
break;
}
}
if(error == true)
result1 = " ERROR";
else
result1 = result;
// cout<<"result = "<<result1<<endl;
}
int main()
{
char num[7];
string result;
int base1, base2;
while(scanf("%s%d%d", num, &base1, &base2) == 3)
{
// printf("num = %s\nbase1 = %d\nbase2 = %d\n", num, base1, base2);
long int temp = convert_base10(num, base1);
// printf("temp = %ld\n", temp);
convert_basei(temp, base2, result);
cout<<result<<endl;
}
return 0;
}