このコードは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;
}