ideone不显示任何输出

时间:2013-02-16 06:40:17

标签: c++

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

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

我怀疑ideone.com有一个错误。

I cloned your source and input, with a couple of minor adjustments and see no output at all.由于我希望看到一些输出,我已经使用页面上的“报告错误/建议”链接提交了一份报告。

Then I cloned it again, made a few more stylistic changes and it gives the desired results.


来自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