5

这段代码有问题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;
}
4

2 回答 2

3

替换此代码:

while(scanf("%s%d%d", num, &base1, &base2) == 3)
{
    long int temp = convert_base10(num, base1);
    convert_basei(temp, base2, result);
    cout<<result<<endl;
}

使用此代码,谜团将消失:

printf("trying to get input\n");
while(scanf("%s%d%d", num, &base1, &base2) == 3)
{
    printf("got some input\n");
    long int temp = convert_base10(num, base1);
    convert_basei(temp, base2, result);
    cout<<result<<endl;
}
printf("got no input\n");
于 2013-02-16T06:46:38.893 回答
0

我怀疑ideone.com.

我克隆了您的源和输入,并进行了一些小的调整,但根本看不到任何输出。由于我希望看到一些输出,因此我使用页面上的“报告错误/提出建议”链接提交了一份报告。

然后我再次克隆了它,做了一些风格上的改变,它给出了想要的结果。


来自 Ideone 的回应

Date: Fri, 8 Mar 2013 12:18:49 +0100
From: Filip Wielewski <wiele@s...>
To: paj-ideone@j...
Cc: contact@i...
Subject: Re: Please see this question on StackOverflow for an explanation...

Hi [Johnsyweb],

thank you for letting us know about this issue. There is indeed
some problem with the original source code posted by Vijay Jain.
We will examine it and try to fix it very soon.

Regards,
Filip Wielewski
Ideone Team

2013/2/16 Ideone bug/suggestion <noreply@i...>

    Ideone bug/suggestion

    category: compiler/interpreter
    type: bug
    date: 2013-02-16 08:38:16
    user: johnsyweb
    e-mail: paj-ideone@j...
    site: http://ideone.com/Q8Kv9m
    compiler: C++ (ver: gcc-4.7.2, id: 1)
    description: Please see this question on StackOverflow for
    an explanation: http://stackoverflow.com/q/14907730/78845

    My response:
    http://stackoverflow.com/a/14908061/78845

    Regards;


    --paj
于 2013-02-16T07:29:35.133 回答