加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – ideone不显示任何输出

发布时间:2020-12-16 05:03:23 所属栏目:百科 来源:网络整理
导读:这个代码是问题 http://www.spoj.com/problems/BASE/,它在Windows和Linux上运行正常但是当我在ideone上运行它时它没有显示任何输出.谁能告诉我这背后的原因是什么? #includestdio.h#includemath.h#includestring.h#includestring#includeiostreamusing name
这个代码是问题 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 = %dn",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] = %dn",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] = %cn",pos,rem);
    num /= base;//    printf("quotient = %dn",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 = %snbase1 = %dnbase2 = %dn",base1,base2);
    long int temp = convert_base10(num,base1);
//        printf("temp = %ldn",temp);
    convert_basei(temp,base2,result);
    cout<<result<<endl;
}
return 0;
}

解决方法

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

有了这段代码,神秘就会消失:

printf("trying to get inputn");
while(scanf("%s%d%d",&base2) == 3)
{
    printf("got some inputn");
    long int temp = convert_base10(num,result);
    cout<<result<<endl;
}
printf("got no inputn");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读